[問題] Socket send 怪現象
遇到的問題: (題意請描述清楚)
在寫socket的程式,有問題的部分在client端傳送他table中所有資料,
若傳完會傳一個end當作結束,server端收到end就可以知道結束了。
client:
-----------------------------
for(){
strcpy(msg,table[i]);
send(msg);
}
strcpy(msg,"end");
send(msg);
-----------------------------
server:
-----------------------------
while(1){
recv(msg);
printf(msg);
if(strcmp(msg,"end")==0)
break;
}
-----------------------------
但是,程式一直有問題,server就是不知道client已經結束了,找到原因如下,
在最後一個要傳的字串(Client 3),會跟著後面的end一起傳給server
變成(Client 3 HI!\n end),導致我的判斷式出了問題,想請問為什麼會這樣呢?!
是因為他會先放在buffer中一起傳?!
------------------------------------------------
結果
------------------------------------------------
client : server:
send : 11111111 recv : 11111111
send : 22222222 recv : 22222222
send : 33333333
send : end recv : 33333333 end
-------------------------------------------------
(Linux下)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.37.180.44
→
04/19 02:39, , 1F
04/19 02:39, 1F
※ 編輯: po500922 來自: 114.37.180.44 (04/19 02:48)
→
04/19 03:07, , 2F
04/19 03:07, 2F
→
04/19 03:11, , 3F
04/19 03:11, 3F
→
04/19 03:11, , 4F
04/19 03:11, 4F
→
04/19 08:21, , 5F
04/19 08:21, 5F
→
04/19 08:22, , 6F
04/19 08:22, 6F
→
04/19 11:41, , 7F
04/19 11:41, 7F
→
04/19 14:10, , 8F
04/19 14:10, 8F
→
04/19 14:11, , 9F
04/19 14:11, 9F
推
04/19 14:46, , 10F
04/19 14:46, 10F
→
04/19 14:46, , 11F
04/19 14:46, 11F
→
04/19 14:50, , 12F
04/19 14:50, 12F
→
04/19 14:51, , 13F
04/19 14:51, 13F
→
04/19 14:51, , 14F
04/19 14:51, 14F
→
04/19 14:52, , 15F
04/19 14:52, 15F
→
04/19 14:52, , 16F
04/19 14:52, 16F
→
04/19 16:57, , 17F
04/19 16:57, 17F