我在centos 6.3下寫了一個測試socket程式
發現一個不解的事情,片段的程式如下:
char *buffer;
buffer = ( char* ) malloc( sizeof( char ) *200 ) ;
clientSock = accept( mysock, (struct sockaddr*)&client, &addrsize );
recv( clientSock, buffer, sizeof( buffer ), 0 );
char sendstring[] = "hello";
send(clientSock, sendstring, sizeof(sendstring), 0);
printf( "%s", buffer );
然後在windows下寫client,發送一個字元陣列
如果陣列有'\n'換行字元
server端才會顯示
否則沒有顯示
但client有收到server送出的字串而顯示出
所以看起來不像卡在接收
如果下一次有送出'\n'字元,則會連之前沒有顯示的一併出現
到底是為什麼會這樣?是linux的socket規定嗎?
要收到'\n',才會從buffer取出?