TCP_socket = socket(AF_INET, SOCK_DGRAM, 0);
You want SOCK_STREAM.
Frage
I am making a server in C, but when I want to listen for connections, listen returns -1 and I don't why. The sockets are created without any problem, the port is assigned, but even though listen gives me an error. Does anybody have a clue? I post the code below. Thank you in advance.
if((UDP_socket = socket(AF_INET, SOCK_DGRAM,0)) > 0){
fprintf(stdout,"socket created\n");
}
bzero((char*)&addrUDP, sizeof(struct sockaddr_in));
addrUDP.sin_family = AF_INET;
addrUDP.sin_port = htons(0);
if(bind(UDP_socket,(struct sockaddr*)&addrUDP, sizeof(struct sockaddr_in))<0){
fprintf(stdout,"asign port UDP Error\n");
close(UDP_socket); exit(1);
}
fprintf(stdout,"Assign port UDP OK \n");
bzero((char*)&addrUDP, sizeof(struct sockaddr_in));
TCP_socket = socket(AF_INET, SOCK_DGRAM, 0);
if(TCP_socket < 0){
fprintf(stdout,"Socket TCP Error\n");
exit(1);
}
fprintf(stdout,"Socket TCP OK\n");
bzero((char *)&addrTCP, sizeof(struct sockaddr_in));
addrTCP.sin_family = AF_INET;
addrTCP.sin_port = htons(0);
if(bind(TCP_socket,(struct sockaddr*)&addrTCP, sizeof(struct sockaddr_in))<0){
fprintf(stdout,"Assign server port TCP ERROR\n");
exit(1);
}
fprintf(stdout,"Assign server port TCP OK\n");
int listening;
listening = listen(TCP_socket, 1024);
if(listening < 0){
fprintf(stdout,"Listening ERROR\n");
exit(1);
}else{
fprintf(stdout,"Listening OK\n");
}
Lösung
TCP_socket = socket(AF_INET, SOCK_DGRAM, 0);
You want SOCK_STREAM.