Socket Programmierung

Silvercreast

Erfahrenes Mitglied
Hallo

mein Problem bezieht sich auf die Socket Programmierung und zwar habe ich für den Client folgenden Code geschrieben:

Code:
	SOCKET MySocket;
	char serverip[20];
	sockaddr_in addr;
	WSADATA wsaData;

	if (WSAStartup(MAKEWORD(2,0),&wsaData) != 0)
	{
		MessageBox(0,"WSA konnte nicht initialisiert werden","Fehler",MB_OK);
		return false;
	}

	hostent* dns = gethostbyname("FuhrparkServer");
	sprintf(serverip, "%u.%u.%u.%u",(unsigned char) dns->h_addr_list[0][0],
		(unsigned char) dns->h_addr_list[0][1], (unsigned char) dns->h_addr_list[0][2], 
		(unsigned char) dns->h_addr_list[0][3]);

	addr.sin_family = AF_INET;
	addr.sin_port = htons(110);
	addr.sin_addr.s_addr = inet_addr(serverip);

	MySocket = socket( AF_INET, SOCK_STREAM,0);

	if(MySocket == 0)
	{
		MessageBox(0,"Socket konnte nicht initalisiert werden","Fehler",MB_OK);
			return false;
	}

	if(connect(MySocket, (sockaddr *) &addr, sizeof(addr)) == -1)
	{
		MessageBox(0,"Es konnte keine Verbindung aufgebaut werden","Fehler",MB_OK);
		return false;
	}

	return true;



}

Den Code habe ich von hier aus einem anderen Thread. Habe dann von einer Internetseite die mir hier auch empfohlen wird einen Server Code erstellt:

Code:
SOCKET MySocket;
	char serverip[20];
	sockaddr_in addr;
	sockaddr_in remote_addr;
	WSADATA wsaData;
	int size;
	int remote_sock;

	if (WSAStartup(MAKEWORD(2,0),&wsaData) != 0)
	{
		MessageBox(0,"WSA konnte nicht initialisiert werden","Fehler",MB_OK);
		return false;
	}

	addr.sin_family = AF_INET;
	addr.sin_port = htons(110);
	addr.sin_addr.s_addr = INADDR_ANY;

	MySocket = socket( AF_INET, SOCK_STREAM,0);

	if(bind(MySocket, (sockaddr* ) &addr, sizeof(addr)) == -1)
	{
		MessageBox(0,"Socket konnte nicht initalisiert werden","Fehler",MB_OK);
			return false;
	}

	if(listen(MySocket,1) == -1)
	{
		MessageBox(0,"Es konnte keine Verbindung aufgebaut werden","Fehler",MB_OK);
		return false;
	}

	fflush(stdout);

	size = sizeof(remote_addr); 
	remote_sock = accept(MySocket,(sockaddr* ) &remote_addr, &size);
	fflush(stdout);

	if(remote_sock < 0)
	{
		_close(MySocket);
		MessageBox(0,"Socket geschlossen","Hinweis",MB_OK);
		return false;
	}


	fflush(stdout);

	size = send (remote_sock,"Wilkommen",11,0);
	
	if(size == -1)
	{
		MessageBox(0,"Fehler","Fehler",MB_OK);
	}
	else
	{
		MessageBox(0,"Gesendet","Hinweis",MB_OK);
	}
	

	_close(remote_sock);
	_close(MySocket);
	fflush(stdout);

	return true;



}

Wie ich aber erkennen musste funktiniert gar nichts. Der Compiler hift mir nicht mehr der sagt alles ok, ich weiss net was ich falsch mache . Hab ich irgendwelche Bugs im Code oder wieso funktioniert das alles nicht.
Ich dachte das sich der Client verbindet und der Server ein Wilkommen zurück schickt aber nichts geht

Ich brauche dringend Hilfe

Gruß Silver
 
Wie siehts den mit dieser Zeile aus
Code:
hostent* dns = gethostbyname("FuhrparkServer");

Ist das dein Host?
 
Probiers doch mal mit "localhost" !
Dein Programmname vom Server hat hier eigentlich nichts zu suchen!
 
achso ich dachte da müsste ich meinen Server eintragen.
Ok danke jetzt sagt er mir zumindestens das keine Verbindung aufgebaut werden kann.
Kannst du mir eventuell noch helfen wie ich den Code verändern muss, damit ich ne Verbindung kriege
 
Das einzige was ich sehen kann (ich vermute du startest den Client vor dem Server :D ) ist die Stelle
Code:
addr.sin_addr.s_addr = INADDR_ANY;
Versuche mal das INADDR_ANY durch ADDR_ANY zu ersetzen?
Code:
addr.sin_addr.s_addr = ADDR_ANY;
gruß!

edit: Wobei, dass ist Quatsch, sonst würde dein Server ja garnicht kompilieren, sorry!!
Wäre vielleicht doch hilfreich, wenn du genauere Fehlermeldungen deines Clients/Servers schreiben würdest!
 
Zuletzt bearbeitet von einem Moderator:
Silvercreast hat gesagt.:
achso ich dachte da müsste ich meinen Server eintragen.
Ok danke jetzt sagt er mir zumindestens das keine Verbindung aufgebaut werden kann.
Kannst du mir eventuell noch helfen wie ich den Code verändern muss, damit ich ne Verbindung kriege

Hallo,

hast du deinen Server auch vorher am localhost:110 gestartet?

Gruß

RedWing
 
@ TwoFaze mein Server und mein Client geben keine Fehlermeldung raus

@ RedWing ich habe meinem Server nur den Port 110 gegeben, wie im Code
 
Silvercreast hat gesagt.:
@ TwoFaze mein Server und mein Client geben keine Fehlermeldung raus

@ RedWing ich habe meinem Server nur den Port 110 gegeben, wie im Code

ja hast du ihn auch gestartet?Das war meine Frage nur um sicher zu gehen
das der Fehler auch wirklich im Code liegt ;)

Gruß

RedWing
 
Zurück