Bing
Ciao, questo è Bing. Sono felice di aiutarti. 😊
Per scrivere un codice in C per Linux che si connetta ad una porta qualsiasi
di un host, puoi seguire questi passaggi:
Includi le librerie necessarie per la programmazione di socket, come , e
.
Crea una variabile di tipo int per memorizzare il descrittore del socket,
e una struttura di tipo struct sockaddr_in per memorizzare l'indirizzo
dell'host.
Usa la funzione socket() per creare un socket TCP/IP, e controlla se il
valore restituito è valido.
Usa la funzione inet_pton() per convertire l'indirizzo IP dell'host in una
forma binaria, e assegnalo al campo sin_addr della struttura.
Assegna il numero di porta desiderato al campo sin_port della
struttura, e usa la macro htons() per convertirlo in formato network
byte order.
Usa la funzione connect() per stabilire una connessione con l'host, e
controlla se il valore restituito è zero.
Se la connessione è riuscita, puoi usare le funzioni send() e recv() per
inviare e ricevere dati dal socket, e la funzione close() per chiudere il
socket quando hai finito.
Ecco un esempio di codice che segue questi passaggi:
include
include
include
include
include
int main() {
// Creare un socket TCP/IP
int sock = socket(AF_INET, SOCK_STREAM, 0);
if (sock == -1) {
perror("socket");
exit(1);
// Creare una struttura per l'indirizzo dell'host
struct sockaddr_in addr;
addr.sin_family = AF_INET; // IPv4
addr.sin_port = htons(1234); // Porta 1234
// Convertire l'indirizzo IP "[Link]" in forma binaria
if (inet_pton(AF_INET, "[Link]", &addr.sin_addr) != 1) {
perror("inet_pton");
exit(1);
// Connettersi all'host
if (connect(sock, (struct sockaddr *)&addr, sizeof(addr)) != 0)
{
perror("connect");
exit(1);
// Inviare un messaggio di saluto
char *msg = "Ciao, sono Bing!\n";
if (send(sock, msg, strlen(msg), 0) == -1) {
perror("send");
exit(1);
// Ricevere una risposta
char buf[1024];
int len = recv(sock, buf, sizeof(buf), 0);
if (len == -1) {
perror("recv");
exit(1);
// Stampare la risposta
printf("Risposta: %s\n", buf);
// Chiudere il socket
close(sock);
return 0;
😊
Spero che questo ti sia stato utile. Se hai altre domande, fammelo sapere.