一、連接有兩類,一類是實連接,例如打固定電話,在線路上固定占用了一個通道,這個通道在通話期間是一直存在的;另一類是虛連接,TCP的連接就是這種,客戶端連接到服務器端后,連接雖然建立了,但是實際上物理上并不是真正存在這樣的通道。他們之間的連接是靠之間的數據包的往來確立的。所以,對于兩臺機器之間網絡斷掉,相互是不可能知道的,并沒有什么東西能通知雙方,而只能是通過事后發送數據包才能出現了問題,具體什么問題還需要進行判斷。一般tcp連接都需要使用一些技術手段來維持,有兩種方法:一是利用tcp協議本身,設置SO_KEEPALIVE;二是應用層增加鏈路檢測包。
二、要明白應用進程和內核之間的區別,我們寫一般的sokect程序,應用程序只是調用系統提供的函數接口,真正的實現都是內核來完成的,由于網絡的特殊性,socket函數有著自己的一些特性,其收發函數都只是本機之間的操作,并不真正涉及到網絡。例如send發送函數,返回成功只是表示我們把數據給了內核的發送緩沖區,并不是已經從網卡發送出去了,至于是否發送成功,send函數本身是不可能獲得的;接收函數類似,只是表示從內核接收緩沖區拷貝到應用進程成功。
二、要明白應用進程和內核之間的區別,我們寫一般的sokect程序,應用程序只是調用系統提供的函數接口,真正的實現都是內核來完成的,由于網絡的特殊性,socket函數有著自己的一些特性,其收發函數都只是本機之間的操作,并不真正涉及到網絡。例如send發送函數,返回成功只是表示我們把數據給了內核的發送緩沖區,并不是已經從網卡發送出去了,至于是否發送成功,send函數本身是不可能獲得的;接收函數類似,只是表示從內核接收緩沖區拷貝到應用進程成功。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
