socket知識積累01

進行網絡通信必須的五種信息:連接使用的協議,本地主機的IP地址,本地進程的協議端口,遠地主機的IP地址,遠地進程的協議端口。

建立Socket連接至少需要一對套接字,其中一個運行于客戶端,稱為ClientSocket ,另一個運行于服務器端,稱為ServerSocket 。

套接字之間的連接過程分為三個步驟:服務器監聽,客戶端請求,連接確認。

很多情況下,需要服務器端主動向客戶端推送數據,保持客戶端與服務器數據的實時與同步。此時若雙方建立的是Socket連接,服務器就可以直接將數據傳送給客戶端;若雙方建立的是HTTP連接,則服務器需要等到客戶端發送一次請求后才能將數據傳回給客戶端,因此,客戶端定時向服務器端發送連接請求,不僅可以保持在線,同時也是在“詢問”服務器是否有新的數據,如果有就將數據傳給客戶端。

1、socket調用庫函數主要有:
創建套接字
Socket(af,type,protocol)
建立地址和套接字的聯系
bind(sockid, local addr, addrlen)
服務器端偵聽客戶端的請求
listen( Sockid ,quenlen)
建立服務器/客戶端的連接 (面向連接TCP)
客戶端請求連接
Connect(sockid, destaddr, addrlen)
服務器端等待從編號為Sockid的Socket上接收客戶連接請求
newsockid=accept(Sockid,Clientaddr, paddrlen)
發送/接收數據
面向連接:
send(sockid, buff, bufflen)
recv( )
面向無連接:
sendto(sockid,buff,…,addrlen)
recvfrom( )
釋放套接字
close(sockid)
tcpsocket的具體實現
服務器的工作流程:首先調用socket函數創建一個Socket,然后調用bind函數將其與本機地址以及一個本地端口號綁定,然后調用listen在相應的socket上監聽,當accpet接收到一個連接服務請求時,將生成一個新的socket。服務器顯示該客戶機的IP地址,并通過新的socket向客戶端發送字符串" hi,I am server!"。最后關閉該socket。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,881評論 18 139
  • 網絡編程 一.楔子 你現在已經學會了寫python代碼,假如你寫了兩個python文件a.py和b.py,分別去運...
    go以恒閱讀 2,076評論 0 6
  • 我剛參加工作的時候,仍在大學附近租房子住,房租便宜,飯錢也不貴。 住的小區里有幾家一層的臨街小飯館,客人都挺多。我...
    何曉暢導演閱讀 837評論 0 49
  • 2018.1.27 唐春桃 今天早上又沒有完成抄經,這個月這已經是第三次了,天氣太冷了,實在是不想起來!
    tangchuntao唐糖閱讀 139評論 2 1
  • 不積跬步,無以至千里;不積小流,無以成江海。——荀子 [TOC] 2017-03-20 一、為什么必須在主線程中更...
    Code_Ninja閱讀 240評論 0 1