Win Sockets
-
ach mom da fehlt was -.-
-
toll mein source code is angeblich spam also der vom clinet -.-
-
Eigentlich sollte bei dem Client folgendes stehen:
Winsock gestartet!
Socket erstellt!
Verbunden mit 127.0.0.1..aber da steht immer:
Fehler: connect gescheitert, fehler code: 10061
halt der Fehlercode
-
Source Code vom client:
#include <winsock2.h>
#include <stdio.h>
//Prototypenint startWinsock(void);
int main(){
long rc;
SOCKET acceptSocket;
SOCKET connectedSocket;
SOCKADDR_IN addr;
// Winsock startenrc=startWinsock();
if(rc!=0)
{
printf("Fehler: startWinsock, fehler code: %d\n",rc);
return 1;
}
else
{
printf("Winsock gestartet!\n");
}
// Socket erstellenacceptSocket=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 erstellt!\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==SOCKET_ERROR)
{
printf("Fehler: bind, fehler code: %d\n",WSAGetLastError());
return 1;
}
else
{
printf("Socket an port 12345 gebunden\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\n",WSAGetLastError());
return 1;
}
else
{
printf("Neue Verbindung wurde akzeptiert!\n");
}
system("PAUSE");
return 0;}
int startWinsock(void)
{
WSADATA wsa;
return WSAStartup(MAKEWORD(2,0),&wsa);
}
-
Ok, der source vom client sieht ok aus,..
trivialer weise erstmal ne frage: server gestartet??gruß
-
zeusosc schrieb:
Ok, der source vom client sieht ok aus,..
Ich würde sagen, der Code vom Client sieht genauso aus wie der Code des Servers...
-
Ja den Server hab ich gestartet.
-
Hier ist der Server:
#include <winsock2.h> #include <stdio.h> //Prototypen int startWinsock(void); int main() { long rc; SOCKET acceptSocket; SOCKET connectedSocket; SOCKADDR_IN addr; // Winsock starten rc=startWinsock(); if(rc!=0) { printf("Fehler: startWinsock, fehler code: %d\n",rc); return 1; } else { printf("Winsock gestartet!\n"); } // Socket erstellen 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 erstellt!\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==SOCKET_ERROR) { printf("Fehler: bind, fehler code: %d\n",WSAGetLastError()); return 1; } else { printf("Socket an port 12345 gebunden\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\n",WSAGetLastError()); return 1; } else { printf("Neue Verbindung wurde akzeptiert!\n"); } system("PAUSE"); return 0; } int startWinsock(void) { WSADATA wsa; return WSAStartup(MAKEWORD(2,0),&wsa); }
-
Jo,...
stimmt, das was du als client gepostet hast ist in wirklichkeit der server,...da fehlt wohl das connect,..
edit: hier ein beispiel client (auch 127.0.0.1:12345)#include <winsock2.h> #include <stdio.h> #include <iostream> #include <string> #include <conio.h> #include <sstream> using namespace std; //Prototypen int startWinsock(void); string int_to_str(int i) { ostringstream ret; ret << i; return ret.str(); } string replace(string inputS, string oldC, string newS){ string retValS = ""; int pos = inputS.find(oldC); for(int i = 0; i < pos; ++i){ retValS += inputS[i]; } retValS += newS; for(int i = pos +1; i < inputS.length(); ++i){ retValS += inputS[i]; } return retValS; } int main() { long rc; SOCKET s; SOCKADDR_IN addr; char buf[256]; char buf2[4096]; string ip; ip=""; char lala[]={0x56,0x56,0x20,0x56,0x56}; // Winsock starten rc=startWinsock(); if(rc!=0) { printf("Fehler: startWinsock, fehler code: %d\n",rc); return 1; } else { printf("Winsock gestartet!\n"); } // Socket erstellen s=socket(AF_INET,SOCK_STREAM,0); if(s==INVALID_SOCKET) { printf("Fehler: Der Socket konnte nicht erstellt werden, fehler code: %d\n",WSAGetLastError()); return 1; } else { printf("Socket erstellt!\n"); } printf("bitte geben sie die ip ein:\n"); cin>>ip; // Verbinden memset(&addr,0,sizeof(SOCKADDR_IN)); // zuerst alles auf 0 setzten addr.sin_family=AF_INET; addr.sin_port=htons(12345); // wir verwenden mal port 12345 addr.sin_addr.s_addr=inet_addr(ip.c_str()); // zielrechner ist unser eigener rc=connect(s,(SOCKADDR*)&addr,sizeof(SOCKADDR)); if(rc==SOCKET_ERROR) { printf("Fehler: connect gescheitert, fehler code: %d\n",WSAGetLastError()); return 1; } else { printf("Verbunden mit 127.0.0.1..\n"); } for(int i=0;i<=sizeof(buf)-5;i++){buf[i]='1';} string temp; // Daten austauschen while(rc!=SOCKET_ERROR) { printf("\nZeichenfolge eingeben [max 256]: "); cin>>ip; /*ip=replace(ip," \0"," "); cout<<ip;*/ //for(int i=0; i<=20;i++){ //temp=ip.substr(i,256); int pos=ip.find(0x20); if(pos!=string::npos){ip[pos]='&';} cout<<pos<<":"<<ip; getch(); send(s,ip.c_str(),20,0); //send(s,buf,256,0); //} rc=recv(s,buf,256,0); if(rc==0) { printf("Server hat die Verbindung getrennt..\n"); break; } if(rc==SOCKET_ERROR) { printf("Fehler: recv, fehler code: %d\n",WSAGetLastError()); break; } buf[rc]='\0'; printf("\nServer antwortet: %s\n",buf); } closesocket(s); WSACleanup(); return 0; } int startWinsock(void) { WSADATA wsa; return WSAStartup(MAKEWORD(2,0),&wsa); }gruß
-
Jetzt hats funktioniert

thx :xmas1: