Ich habe eine einfache Client/Server TCP-Verbindung erstellen.Solaris 10 64bit "Broken Pipe" auf TCP-Verbindung
Wenn der Server bereits läuft und der Client nach dem Start startet, funktioniert alles OK.
PROBLEM Wenn Client startet, bevor Server -> Client beendet mit "Broken Pipe"
Code Auftraggeber:
char *sUceTcpIP="127.0.0.1";
int isUceTcpPort=51515;
struct sockaddr_in dest;
memset(&dest, 0, sizeof(dest));
dest.sin_family = AF_INET;
dest.sin_addr.s_addr = inet_addr(sUceTcpIP);
dest.sin_port = htons(isUceTcpPort);
while ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) <= 0) ;
while (connect(sockfd,(struct sockaddr *) &dest,sizeof(dest)) < 0)
{ sleep(1); }
strcpy(buffer,"sometext");
send(sockfd,buffer,strlen(buffer)+1,0); <---- Broken Pipe
gdb Backtrace-Signal zeigt von __so_send in/64 aufgerufen werden /libc.so
Ich habe versucht Einstellung NON-Blockin, Linger, Wiederverwendung, schläft auf Client/Server, aber nichts funktioniert s.
Ich habe auch versucht, Signal (SIGPIPE, SIG_IGN); auf dem Client
Dies scheint wie ein riesiger Fehler.
Alle HILFE/Workarounds Leute?