0
我創建一個簡單的客戶端/服務器的TCP連接。的Solaris 10的64位「水管壞了」關於TCP連接
如果服務器已經在運行,並且客戶端啓動aftewards一切工作正常。
問題如果客戶端服務器之前啓動 - >客戶端退出了 「斷管」
客戶機代碼:
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回溯顯示信號從__so_send在/ 64稱爲/libc.so
我試過設置NON-Blockin,Linger,Reuse,睡到客戶端/服務器,但沒有任何工作秒。
我也嘗試過信號(SIGPIPE,SIG_IGN);客戶端
這看起來像一個巨大的BUG。
任何幫助/解決方法人?