1. 程式人生 > >TCP和UDP程式設計理解:bind ,recv,recvfrom,send,sendto

TCP和UDP程式設計理解:bind ,recv,recvfrom,send,sendto

   1:作為客戶端,呼叫 connect ,那麼這個 bind 函式是為了繫結到都固定 IP 和作為自己 socket 地址。 2:作為伺服器,呼叫 accept ,bind 是用來繫結監聽固定的 socket 地址資料,對於外來 socket,只有來之對應 IP 並連結的目標埠號才可以連結本伺服器。  :TCP 和 UDP 通訊收發函式區別(記住soket中是否存放有IP 和埠資訊,TCP有,UDP無,同時TCP伺服器需要多個 socket 物件,對應多個連線) 1:TCP用send 和 recv : 這是因為每個TCP都有一個連線,每次連線完成後,都會把連線的資訊記錄在
socket 中,這樣每次收發資料都知道對方自己的 IP 地址還有埠號,無需再次指定。 記錄是發生在 accept 和 connect 呼叫完成後。    1)connect 呼叫因為只有一個socket 連線,就記錄在本地。    2)而對於accept 由於有多個連線,所以 accept 會返回一個 socket 物件,對應一個TCP連線,記錄對應的IP和埠2:UDP 利用 sendto() 和 recvfrom()        1)recvfrom 會返回傳送端地址,這樣對伺服器來說,由於時 UDP socket 物件沒有記錄對應的IP和埠資訊(記錄也沒有用,UDP不穩定
隨時可能變化),會需要用到改地址給客戶端來發送響應。       對於客戶端,由於每次始終是知道伺服器IP地址和埠(和一個伺服器互動,所以無需記錄(除非UDP客戶端需要和多個伺服器互動,需要一一記錄,才能確保互動正確)       2)sendto        由於沒有記錄IP 和埠在 socket 物件中,所以每次都需要指定接受方地址,       無論是客戶端和伺服器都需要用