程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> 關於C >> Beej’s Guide Network to Programming 系列連載15

Beej’s Guide Network to Programming 系列連載15

編輯:關於C
上一篇:/kf/201112/115686.html

5.8. sendto()和recvfrom() ---和我說話,數據報
       “這很不錯啊”,你說,“但是你還沒有講無連接數據報套接字呢?” 沒問題,現在我們開始這個內容。

既然數據報套接字不是連接到遠程主機的,那麼在我們發送一個包之前需要什麼信息呢? 不錯,是目標地址!

       sendto()函數原型:

int sendto(intsockfd, const void *msg, int len, unsigned int flags,

const struct sockaddr *to, socklen_ttolen);

       你已經看到了,除了另外的兩個信息外,其余的和函數 send() 是一樣的。 to 是個指向數據結構 struct sockaddr 的指針,它包含了目的地的IP 地址和端口信息。tolen 可以簡單地設置為sizeof(struct sockaddr)。 和函數 send() 類似,sendto()返回實際發送的字節數(它也可能小於你想要發送的字節數!),或者在錯誤的時候返回-1。

       recvfrom()函數原型:

int recvfrom(intsockfd, void *buf, int len, unsigned int flags,

struct sockaddr *from, int *fromlen);

       又一次,除了兩個增加的參數外,這個函數和 recv() 也是一樣的。from 是一個指向局部數據結構 struct sockaddr 的指針,它的內容是源機器的IP 地址和端口信息。fromlen 是個 int 型的局部指針,它的初始值為 sizeof(struct sockaddr)。函數調用返回後,fromlen保存著實際儲存在 from 中的地址的長度。

recvfrom() 返回收到的字節長度,或者在發生錯誤後返回 -1。

 摘自 xiaobin_HLJ80的專欄

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved