[問題] 使用socket的問題 in Concurrent TCP S …
遇到的問題:目前照著書上的觀念,在fork後若是進入父程序則要記得關閉accept所
建構出的指標,而在子程序要關閉socket物件,如下:
................
................(前面略)
for(;;){
int conn;
conn=accept(sockfd,(struct sockaddr *)&addr_cln,&sLen);
.......
if(fork()>0){
close(conn);
continue;
}
........
close(sockfd);
..........
}
可是經過測試,照上面的方式Server會在close時(推測試socket)令accept發生Error
註明:有傳輸成功 ,但是在Server端會發出accept Error
然而我將close(sockfd);刪除後,Server/Client可以正常執行,而且沒Error
且書上一直強調父程序關閉connected socket(也就是利用accept建立的)
然後在子程序中關閉Listening socket(Server接收Client連線要求的socket)
雖然書上有提到說socket會在程序結束自動關掉?但是要養成自己開自己關的習慣
為何我照上面的方法會錯勒 = =?
希望版友幫個忙~感謝~ 新手上路問題多多T.T
希望得到的正確結果:是否正如書上的觀念? 而這段程式怎麼又會錯在accept呢
還是說這樣是正常的?
程式跑出來的錯誤結果:accept Error
開發平台:g++ in Linux (in VirtualBox)
有問題的code:在問題裡面XD ,大致上和教材課本的Concurrent TCP echo一樣
再次感謝ˊˋ
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.40.147.118
※ 編輯: homestay 來自: 114.40.147.118 (04/01 23:33)
※ 編輯: homestay 來自: 114.40.147.118 (04/01 23:40)
※ 編輯: homestay 來自: 114.40.147.118 (04/01 23:40)
→
04/02 00:03, , 1F
04/02 00:03, 1F
→
04/02 00:28, , 2F
04/02 00:28, 2F
→
04/02 00:28, , 3F
04/02 00:28, 3F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章