Socket Programmierung

Und wie schauts aus, kommt der Server auch ohne Fehlermeldungen
bis zum accept? Eventuell ist der Port 110 bzw Socket auch schon durch
einen anderen Dienst belegt, dann sollte eigentlich ein Fehler
beim bind() entstehen...

Gruß

RedWing
 
Soweit ich das deinem Server oben entnehmen kann, macht er Fehlerausgaben bei "bind" und "connect", da sollte dann eigentlich was stehen!
Wenn du dich wirklich für den Fehler interessierst, dann spiel ein bischen mit deiner Anwendung rum und experimentiere. Vielleicht könntest du auch, um ein lauffähiges Beispiel zu bekommen und auch ein bischen Hilfestellung zu haben bei
http://www.c-worker.ch
vorbeischauen, da ist eigentlich auch alles für den Einstieg schritt-für-schritt erklärt.
Kannst ja dann auch hier berichten an was es lag..

PS.: Bin auch Azubi Fachinformatiker AE :)
 
Hallo versuchs mal bitte so bei deinem Client:
anstatt:
Code:
addr.sin_addr.s_addr = inet_addr(serverip);
so:
Code:
addr.sin_addr.s_addr = inet_addr("127.0.0.1");

Ich vermute das die ip bei deinem Bsp nicht richtig extrahiert wird...

Gruß

RedWing
 
Silvercreast hat gesagt.:
Hab ich irgend was beim empfangen der Daten falsch gemacht

Hm ich hab leider kein Windows kanns dementsprechend nicht testen.
Die Socketpürogrammierung unter Linux ist recht ähnlich.
Also hier mal folgendes Gerüst unter Linux was bei mir funktioniert:

Server:

Code:
int main(){
    struct sockaddr_in serveraddr;
    struct sockaddr client;
    int sdesc = 0;
    int cdesc = 0;
    int size = sizeof(client);
    serveraddr.sin_family = AF_INET;
    serveraddr.sin_port = htons(4444);
    serveraddr.sin_addr.s_addr = htonl(INADDR_ANY);
    sdesc = socket(PF_INET, SOCK_STREAM, 0);
    bind(sdesc, (struct sockaddr*)&serveraddr, sizeof(serveraddr));
    listen(sdesc, 1);
    cdesc = accept(sdesc, &client, &size);
    return 0;
}

Client:

Code:
int main(){
    struct sockaddr_in serveraddr;
    int cdesc = 0;
    serveraddr.sin_family = AF_INET;
    serveraddr.sin_port = htons(4444);
    serveraddr.sin_addr.s_addr = inet_addr("127.0.0.1");
    cdesc = socket(PF_INET, SOCK_STREAM, 0);
    connect(cdesc, (struct sockaddr*)&serveraddr, sizeof(serveraddr));
    return 0;
}


Vielleicht hilfts dir ja a weng weiter.

Gruß

RedWing
 
Zuletzt bearbeitet:
Habe den Fehler gefunden und zwar waren es ganz simple Fehler (Auf die man aber erstmal kommen muss).
In meinen Codes musste die WSAStartup entfernt werden:

Code:
//	WSADATA wsaData;


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

Da schon automatisch die AfxSocketInit() erstellt wird , diese AfxSocketInit() übernimmt bzw enthält schon die WSAStartup Funktion. Deswegen hatte mein Programm vorher Probleme mit der Verbindung gehabt.
 
Zuletzt bearbeitet:
Zurück