小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

client server的bind區(qū)別 socket通信

 昵稱5169677 2017-02-24

  無連接的socket的客戶端和服務(wù)端以及面向連接的socket的服務(wù)端通過調(diào)用bind函數(shù)來配置本地信息。使用bind函數(shù)時,通過將my_addr.sin_port置為0,函數(shù)會自動為你選擇一個未占用的端口來使用。
  Bind()函數(shù)在成功被調(diào)用時返回0;出現(xiàn)錯誤時返回"-1"并將errno置為相應(yīng)的錯誤號。需要注意的是,在調(diào)用bind函數(shù)時一般不要將端口號置為小于1024的值,因為1到1024是保留端口號,你可以選擇大于1024中的任何一個沒有被占用的端口號。

  有連接的socket客戶端通過調(diào)用Connect函數(shù)socket數(shù)據(jù)結(jié)構(gòu)中保存本地和遠端信息,無須調(diào)用bind(),因為這種情況下只需知道目的機器的IP地址,而客戶通過哪個端口與服務(wù)器建立連接并不需要關(guān)心,socket執(zhí)行體為你的程序自動選擇一個未被占用的端口,并通知你的程序數(shù)據(jù)什么時候打開端口。(當(dāng)然也有特殊情況,linux系統(tǒng)中rlogin命令應(yīng)當(dāng)調(diào)用bind函數(shù)綁定一個未用的保留端口號,還有當(dāng)客戶端需要用指定的網(wǎng)絡(luò)設(shè)備接口和端口號進行通信等等)

總之:
1.需要在建立連接前就知道端口的話,需要 bind 
2.需要通過指定的端口來通訊的話,需要 bind

具體到上面那兩個程序,本來用的是TCP,客戶端就不用綁定端口了,綁定之后只能運行一個client的程序?qū)儆谧约喝藶樵O(shè)定的障礙,而從服務(wù)器那邊得到的客戶機連接端口號(是系統(tǒng)自動分配的)與這邊客戶機綁定的端口號根本是不相關(guān)的,所以客戶端綁定也就失去了意義。
  
  首先,服務(wù)器和客戶端都可以bind,bind并不是服務(wù)器的專利。
  客戶端進程bind端口:由進程選擇一個端口去連服務(wù)器,(如果默認情況下,調(diào)用bind函數(shù)時,內(nèi)核指定的端口是同一個,那么調(diào)用多個調(diào)用了bind()的client程序,會出現(xiàn)端口被占用的錯誤)注意這里的端口是客戶端的端口。如果不分配就表示交給內(nèi)核去選擇一個可用端口。
  客戶端進程bind IP地址:相當(dāng)于為發(fā)送出去的IP數(shù)據(jù)報分配了源IP地址,但交給進程分配IP地址的時候(就是這樣寫明了bind IP地址的時候)這個IP地址必須是主機的一個接口,不能分配一個不存在的IP。如果不分配就表示由內(nèi)核根據(jù)所用的輸出接口來選擇源IP地址。
 
  一般情況下客戶端是不用調(diào)用bind函數(shù)的,一切都交給內(nèi)核搞定,YES!
   服務(wù)端進程bind端口:基本是必須要做的事情,比如一個服務(wù)器啟動時(比如freebsd),它會一個一個的捆綁眾所周知的端口來提供服務(wù),同樣,如果bind了一個端口就表示我這個服務(wù)器會在這個端口提供一些“特殊服務(wù)”。
  服務(wù)端進程bind IP地址:目的是限制了服務(wù)端進程創(chuàng)建的socket只接受那些目的地為此IP地址的客戶鏈接,一般一個服務(wù)器程序里都有
servaddr.sin_addr.s_addr = htonl(INADDR_ANY); // 只是針對IP4,IP6代碼不太一樣

這樣一句話,意思就是:我不指定客戶端的IP,隨便連,來者不拒!

總之只要你bind時候沒有指定哪一項(置為0),內(nèi)核會幫你選擇。
 
  注意:只能對一個socket描述符綁定一次,不能綁定多次,除非前面已經(jīng)將該描述符close了。反過來一個端口也只能被綁定到同一個socket描述符上,除非他們使用的不同的協(xié)議。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多