這個問題我是在論壇看到的類似的問題,當(dāng)時回復(fù)了他。。后面仔細(xì)想想又好像自己也不是太清楚。如是又看了一下tcp/ip詳解。。。。
順便自己做了一下實驗,發(fā)現(xiàn)發(fā)送一些數(shù)據(jù)后客戶端就卡死了(阻塞套接字),服務(wù)器只接受連接,不取出系統(tǒng)緩存的數(shù)據(jù)。
我想估計是服務(wù)器的對應(yīng)套接字的buffer用完了,所以內(nèi)核不在接收數(shù)據(jù)了,導(dǎo)致客戶端不能夠發(fā)送數(shù)據(jù)。那這樣看來,客戶端想不停的發(fā)送數(shù)據(jù),只有不斷建立連接才可以,在一個連接不停發(fā)送數(shù)據(jù)是不能的事情。
后面看了一下buffer 和 窗口大概類似,但不等于一會事。
比喻本機(jī)上窗口是25000,但接收buffer 8192.. 而且看tcp/ip 2貌似buffer還是可以提高他的上限。
以前覺得socket send 貌似就等于tcp/ip協(xié)議,現(xiàn)在看來真好傻,好天真。。
socket 函數(shù)只是插口層。。以前不明白為什么插口,現(xiàn)在明白了,就是用應(yīng)用層鑰匙,通過這把鑰匙來跟下面協(xié)議打交道。。
posted on 2013-12-18 22:26
小魚兒 閱讀(675)
評論(0) 編輯 收藏 引用