Client socket problem
-
Hey
hab diese code zeilen einmal mit codeblocks compiliert und irgendwie krieg ich immer eine ältere Version der Programms. Hier mal der Code:/*Client Socket */ #include <iostream> #include <stdio.h> #include <winsock2.h> #include <windows.h> int startWinsock(void); int main() { long rc; rc=startWinsock(); SOCKET s; // SOCKET wird erstellt sockaddr_in addr; if(rc!=0) { printf("Fehler: start Winsock, fehler code: %i\n",rc); } else { printf("Winsock gestartet...\n"); } s=socket(AF_INET,SOCK_STREAM,0); if(s==INVALID_SOCKET) { printf("Fehler: Der Socket konnte nicht erstellt werden. Fehler Code: %d\n",WSAGetLastError()); } else { printf("Socket wurde erstellt\n"); } memset(&addr,0,sizeof(sockaddr_in)); addr.sin_family=AF_INET; addr.sin_port=htons(1234); addr.sin_addr.s_addr=inet_addr("127.0.0.1"); rc=connect(s,(sockaddr*)&addr,sizeof(sockaddr)); //connecten if(rc==SOCKET_ERROR) { printf("Fehler: connect gescheitert, fehler code: %i\n",WSAGetLastError); } else { printf("Verbunden mit 127.0.0.1 ...\n"); } return 0; } int startWinsock(){ WSADATA wsa; return WSAStartup(MAKEWORD(2,0),&wsa); }und der Compiler:
Sourcecodes\Sockets\socket\main.cpp||In function `int main()':|
Sourcecodes\Sockets\socket\main.cpp|22|warning: int format, long int arg (arg 2)|
Sourcecodes\Sockets\socket\main.cpp|50|warning: int format, pointer arg (arg 2)|
||=== Build finished: 0 errors, 2 warnings ===|Mein Probis nun das ich keine connection zu meinem Server programm bekomm:

/*Server Socket */ #include <iostream> #include <stdio.h> #include <winsock2.h> #include <windows.h> #include <conio.h> int startWinsock(void); int main(){ long rc; SOCKET acceptSocket; SOCKET connectedSocket; sockaddr_in addr; rc=startWinsock(); if (rc!=0) { printf("Fehler: startWinsock, fehler code: %d\n",rc); } else { printf("Winsock gestartet\n"); } acceptSocket=socket(AF_INET,SOCK_STREAM,0); if(acceptSocket==INVALID_SOCKET) { printf("Fehler: Der Socket konnte nicht erstellt werden,fehler code %d\n",WSAGetLastError()); return 1; } else { printf("Socket erstellen!\n"); } memset(&addr,0,sizeof(sockaddr_in)); addr.sin_family=AF_INET; addr.sin_port=htons(12345); addr.sin_addr.s_addr=ADDR_ANY; rc=bind(acceptSocket,(sockaddr*)&addr,sizeof(sockaddr_in)); if(rc!=0) { printf("Fehler:bind,fehler code: %d",WSAGetLastError()); return 1; } else { printf("Socket konnte erstellt werden\a\n"); } rc=listen(acceptSocket,10); if (rc== SOCKET_ERROR) { printf("Fehler: listen,fehler code %d\n",WSAGetLastError); return 1; } else { printf("acceptSocket ist im listen Modus...\n"); } connectedSocket=accept(acceptSocket,NULL,NULL); if (connectedSocket==INVALID_SOCKET) { printf("Fehler:accept,fehler code %d",WSAGetLastError); return 1; } else { printf("Neue Verbindung wurde akzeptiert..."); } return 0; } int startWinsock(void) { WSADATA wsa; return WSAStartup(MAKEWORD(2,0),&wsa); }Warum kriegt mein client keine connection zum server programm??? Die Lösung liegt glaub ich in der Fehlermeldung des compilers... nur hab ich keinen Plan was die zu bedeuten haben...

Freu mich scho auf eure Antworten...

lg pisco
-
Hallo,
das sind "nur" Warnungen, die machst du erst mal weg:
rc ist doch ein long:
da kannst du doch nicht einfach "%i" (Integer!) als Format angeben:
printf("Fehler: start Winsock, fehler code: %i\n",rc);beim anderen auch eine Nachlässigkeit, du übergibst einen Funktionszeiger (WSAGetLastError) an printf :
printf("Fehler: connect gescheitert, fehler code: %i\n",WSAGetLastError)setze die runden Klammern dahinter, und es ist ok, weil hier WSAGetLastError einen int zurückgibt.
MfG,
Probe-Nutzer
-
Dieser Thread wurde von Moderator/in rüdiger aus dem Forum ANSI C in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.