SIGPIPE bei write() auf TCP-socket

Herakles

Profifragensteller
Hi Freunde!

Ich versuche mich soeben an Netzwerkprogrammierung und es klappt auch eigentlich alles recht gut. Problem ist nur, dass mein Programm immer abstürzt, wenn es write(2) aufrufen will.

Hier mal kurz ein Stück des Codes:

Code:
file_descriptor_inet = socket( PF_INET, SOCK_STREAM, 0);

        if ( file_descriptor_inet <= 0 ) {
          perror(NULL);
          exit(1);
        }

	if ( bind( file_descriptor_inet, (struct sockaddr *) &address, address_len ) == 0 )
		printf("Socket bound!\n");
	else {
		perror(NULL);
		exit(1);
	}

	if ( ( listen( file_descriptor_inet, 1 ) == 0 ) )
		printf("Waiting for a connection... \n");
	else {
		perror(NULL);
		exit(1);
	}

	if ( accept( file_descriptor_inet, (struct sockaddr*) &address, &address_len) == -1 ) {
		perror(NULL);
		exit(1);
	}
	else printf("Connection esablished! \n");
write(file_descriptor_inet,&address,10);

Wie man sehen kann, wird zuerst ein Socket angelegt, dieser mit bind, listen und accept schon genutzt, was auch alles wudnerbar klappt. Sobald ich aber auf diesen Socket schreiben möchte, bricht mein Programm mit einem SIGPIPE ab. Ich suche nun bereits seit einigen Stunden und finde den Fehler nicht. Hat jemand eine Idee?

Ach ja:

Linux, ubuntu6.06, Kernel 2.6.15-27-386 (nicht hauen bitte, ist auf der Arbeit, also bitte beruhigen! :-) )

Danke, Herakles
 
Lösung:

accept() wirft den Connection-Socket zurück, auf dem Kommuniziert werden kann...

Manpages lesen erspart stundenlanges verzweifeln...

So long... Herakles :belehren:
 
Musst du in C programmieren? Ich habe in PHP beispielsweise verschiedene Prozesse über Sockets kommunizieren lassen, da gab es keine Probleme. Und das obwohl PHP wohl nicht die Standardsprache für solche Dinge ist.
 
Zurück
Oben