Ho appena iniziato a imparare le basi dei socket (Linux). Ho provato la mia mano ad un piccolo esempio, ma non funziona e non ho idea di cosa non funzioni.Errore socket: connessione rifiutata - cosa sto facendo male?
Viene visualizzato un messaggio di errore "Connessione rifiutata".
Ecco il mio codice:
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/ip.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>
int main() {
int c;
c = socket(AF_INET, SOCK_STREAM, 0);
if (c < 0) {
printf("Error in creating socket! %s\n", strerror(errno));
return 1;
}
struct sockaddr_in server;
memset(&server, 0, sizeof(server));
server.sin_port = htons(1234);
server.sin_family = AF_INET;
server.sin_addr.s_addr = inet_addr("127.0.0.1"); //local host
if (connect(c, (struct sockaddr *)&server, sizeof(server)) < 0) {
// Here is my error
printf("Error when connecting! %s\n",strerror(errno));
return 1;
}
while(1) {
char msg[100];
printf("Give message: ");
fgets(msg, sizeof(msg), stdin);
send(c, &msg, sizeof(msg), 0);
char resp[100];
recv(c, &resp, sizeof(resp), 0);
printf("Received: %s\n", resp);
}
close(c);
}
EDIT
Certo! l'errore era in realtà nel server. Ho semplicemente scoperto che il client ha inviato il messaggio, quindi ho ristretto il mio punto di vista, non mi sono nemmeno preoccupato di guardare indietro al server.
Dal momento che l'errore sembra essere anche nel mio server, potrei finire per chiedere un'altra domanda e il collegamento qui
Server stava ascoltando (12345) ...
Hai scritto un programma che è in ascolto sulla porta 1234? Prova ad eseguire nc -l 127.0.0.1 1234 prima di avere un listener. – fuz