Fehler bei Server/Client Programmen
-
Hallo, ich habe mal ein bisschen mit den Grundlagen der Socket-Programmierung angefangen.
Folgendes:
Der Server mit folgendem Programm erwartet accept() und soll dann beendet werden.#include <winsock.h> #include <stdio.h> int main() { WSADATA wsa; WSAStartup(0x0101,&wsa); int tcp_socket; struct sockaddr_in srv; char recvbuffer[1024]; srv.sin_family = AF_INET; srv.sin_port = htons(80); srv.sin_addr.s_addr=INADDR_ANY; tcp_socket=socket(AF_INET,SOCK_STREAM,0); //tcp bind(tcp_socket,(struct sockaddr *)&srv,sizeof(srv)); listen(tcp_socket,3); int srvlen=sizeof(srv); accept(tcp_socket,(struct sockaddr *)&srv,&srvlen); return 0; }
Nachdem ich den Server gestartet habe, starte ich den Client, der nur connect() "machen" soll, daraufhin müsste der Server beendet werden, jedoch bekomme ich als connect() return-Wert ein -1 (Fehler nehm ich mal an).
Aber warum ?
Hier der Code für den Client:#include <stdio.h> #include <winsock.h> int main() { WSADATA wsa; WSAStartup(0x0101,&wsa); int tcp_socket; struct sockaddr_in host; host.sin_family = AF_INET; host.sin_port = htons(80); host.sin_addr.s_addr=inet_addr("192.168.2.101"); if( (tcp_socket=socket(AF_INET,SOCK_STREAM,0)) < 0 ) //tcp { printf("Socket error!"); exit(1); } printf("%d",connect(tcp_socket,(struct sockaddr *)&host,sizeof(host) ) ); closesocket(tcp_socket); return 0; }
-
Als erstes mal nach jeder Funktion checken, obs erfolgreich war, damit man
weiß, wo es wirklich klemmt....
-
ok, ich habs gefunden, mein Vista scheint den port 80 für connect() zu blockieren, habe dann einen port 12345 genommen, dann gings.