Servercode melded id error - win10
-
Hallo
ich hatte heute auf meiner festplatte nen server/client beispiel wieder gefunden und wollte es ausführen:Problem: id error - und es pop die makefile.h auf
$(BIN): (CC) $(LINKOBJ) -o $(BIN) $(LIBS)
hier der code
//////////////////////////// // Server // //////////////////////////// #include <winsock2.h> #include <windows.h> #include <stdio.h> #pragma comment(lib, "Ws2_32.lib") //Prototypen int startWinsock(void); int main() { long rc; SOCKET acceptSocket; SOCKET connectedSocket; SOCKADDR_IN server; char buf[256]; char buf2[300]; // Winsock starten rc=startWinsock(); // Socket erstellen acceptSocket=socket(AF_INET,SOCK_STREAM,0); // Socket binden memset(&server,0,sizeof(SOCKADDR_IN)); server.sin_family=AF_INET; server.sin_port=htons(60987); server.sin_addr.s_addr=ADDR_ANY; rc=bind(acceptSocket,(SOCKADDR*)&server,sizeof(SOCKADDR_IN)); // In den listen Modus rc=listen(acceptSocket,10); // Verbindung annehmen connectedSocket=accept(acceptSocket,NULL,NULL); // Daten austauschen while(rc!=SOCKET_ERROR) { rc=recv(connectedSocket,buf,256,0); printf("\n",buf); buf[rc]='\0'; printf("Server: "); gets(buf2); rc=send(connectedSocket,buf2,strlen(buf2),0); } closesocket(acceptSocket); closesocket(connectedSocket); WSACleanup(); return 0; } int startWinsock(void) { WSADATA wsa; return WSAStartup(MAKEWORD(2,0),&wsa); }
-> was ist da los ..
liegt das an windows 10 ?
-
schrittweise debuggen
-
Danke hat geklappt !
hatte die -lws2_32 in linker vergessenHier das ganze Beispiel - hatte ich mal irgendwo vor paar jahren gefunden
und es nicht vorenthalten-> open your port in the Firewall or use port 8888
-> Client connect to server -
so Client Need the ip (find out your ip or use 127.0.0.1)//////////////////////////// // Server // //////////////////////////// #include <winsock2.h> #include <windows.h> #include <stdio.h> // add linker:-lws2_32 #pragma comment(lib, "Ws2_32.lib") //Prototypen int startWinsock(void); int main() { long rc; SOCKET acceptSocket; SOCKET connectedSocket; SOCKADDR_IN addr; char buf[256]; char buf2[300]; // Winsock starten rc=startWinsock(); // Socket erstellen acceptSocket=socket(AF_INET,SOCK_STREAM,0); // Socket binden memset(&addr,0,sizeof(SOCKADDR_IN)); addr.sin_family=AF_INET; addr.sin_port=htons(60982); addr.sin_addr.s_addr=ADDR_ANY; rc=bind(acceptSocket,(SOCKADDR*)&addr,sizeof(SOCKADDR_IN)); // In den listen Modus rc=listen(acceptSocket,10); // Verbindung annehmen connectedSocket=accept(acceptSocket,NULL,NULL); // Daten austauschen while(rc!=SOCKET_ERROR) { rc=recv(connectedSocket,buf,256,0); printf("\n",buf); buf[rc]='\0'; printf("Server: "); gets(buf2); rc=send(connectedSocket,buf2,strlen(buf2),0); } closesocket(acceptSocket); closesocket(connectedSocket); WSACleanup(); return 0; } int startWinsock(void) { WSADATA wsa; return WSAStartup(MAKEWORD(2,0),&wsa); }
und der Client
//////////////////////////// // Client // //////////////////////////// #include <winsock2.h> #include <windows.h> #include <stdio.h> // add linker:-lws2_32 #pragma comment(lib, "Ws2_32.lib") int startWinsock(void); char befehl1[] = { "pc_down" }; char befehl2[] = { "pc_view" }; int main() { long rc; SOCKET s; SOCKADDR_IN addr; char buf[256]; char buf2[300]; // Winsock starten rc=startWinsock(); // Socket erstellen s=socket(AF_INET,SOCK_STREAM,0); // Verbinden memset(&addr,0,sizeof(SOCKADDR_IN)); addr.sin_family=AF_INET; addr.sin_port=htons(60982); addr.sin_addr.s_addr=inet_addr("127.0.0.1"); rc=connect(s,(SOCKADDR*)&addr,sizeof(SOCKADDR)); // Daten austauschen while(rc!=SOCKET_ERROR) { printf(buf,"Hallo Server ",buf); send(s,buf,strlen(buf),0); buf[rc]='\0'; rc=recv(s,buf,256,0); buf[rc]='\0'; if((strcmp(befehl1, buf)) == 0) { Sleep(1000); system("cls"); Sleep(1000); printf("."); Sleep(1000); printf("."); Sleep(1000); printf("."); printf("Befehl wird ausgeführt\n"); buf[rc]='\0'; } printf("\nServer antwortet: %s\n",buf); } closesocket(s); WSACleanup(); Sleep(1000); return 0; } int startWinsock(void) { WSADATA wsa; return WSAStartup(MAKEWORD(2,0),&wsa); }
Have Fun
.. und keine böhsen Sachen mit machen
(wie rückwertsabfragen oder so:) if text = ... dann ...) :DDD
-
Danke hat geklappt !
Ach wirklich?
Was ist dein Kriterium für "hat geklappt"?
Ich nehme mal an, der Compiler hat (mit vielen Warnungen, die du ignoriert hast) übersetzt und ein Testlauf mit Spieldaten unter deiner privaten Testumgebung hat "funktioniert", d.h. du hast deine Erwartungen erfüllt gesehen.
Das hat überhaupt nichts zu sagen.
Der Code ist kompletter Schrott.hatte ich mal irgendwo vor paar jahren gefunden
Das sieht man.
Der Code ist Schrott und sollte deswegen hier im Forum nicht verbleiben, andere Leute könnten später diesen Unsinn übernehmen und weiterverbreiten.
printf("\n",buf); ... gets(buf2); ... printf(buf,"Hallo Server ",buf); ... rc=recv(connectedSocket,buf,256,0); buf[rc]='\0'; /* UB wenn rc == 256 oder -1 */ u.v.a.m.