Linux 套接字編程 (二)

一、sendto函數

 

 

功能:基於UDP發送數據報,返回實際發送的數據長度,出錯時返回-1

參數說明:

sockfd:套接字描述符

data:指向要發送數據的指針

data_len:數據長度

flags:一直爲0

remaddr:遠端地址:IP地址和端口號

remaddr_len :地址長度

舉例:sendto(sockfd,buf,sizeof(buf),0,(struct sockaddr *)&address, sizeof(address)); 

 

二、send函數

 

 

功能:

在TCP連接上發送數據,返回成功傳送數據的長度,出錯時返回-1。

send會將外發數據複製到OS內核中,也可以使用send發送面向連接的UDP報文。

參數說明:

sockfd:套接字描述符

data:指向要發送數據的指針

data_len:數據長度

flags:一直爲0

舉例(p50):send(s,req,strlen(req),0);

三、recvfrom函數
 
功能:從UDP接收數據,返回實際接收的字節數,失敗時返回-1
參數說明:
Sockfd:套接字描述符
buf:指向內存塊的指針
buf_len:內存塊大小,以字節爲單位
flags:一般爲0
from:遠端的地址,IP地址和端口號
fromlen:遠端地址長度
舉例:recvfrom(sockfd,buf,8192,0, ,(struct sockaddr *)&address, sizeof(address)); 
四、recv函數
 
功能:
從TCP接收數據,返回實際接收的數據長度,出錯時返回-1。
服務器使用其接收客戶請求,客戶使用它接受服務器的應答。如果沒有數據,將阻塞,如果收到的數據大於緩存的大小,多餘的數據將丟棄。也可以使用recv接收面向連接的UDP的報文
參數說明:
Sockfd:套接字描述符
Buf:指向內存塊的指針
Buf_len:內存塊大小,以字節爲單位
flags:一般爲0 
舉例:recv(sockfd,buf,8192,0)
五、close函數
 
功能:
撤銷套接字.
如果只有一個進程使用,立即終止連接並撤銷該套接字,如果多個進程共享該套接字,將引用數減一,如果引用數降到零,則撤銷它。
參數說明:
Sockfd:套接字描述符
舉例:close(socket_descriptor)
六、其它套接字函數
gethostname 獲得主機名
getpeername 獲得與套接口相連的遠程協議地址
getsockname 獲得套接口本地協議地址
gethostbyname 根據主機名取得主機信息
gethostbyaddr 根據主機地址取得主機信息
getprotobyname 根據協議名取得主機協議信息
getprotobynumber 根據協議號取得主機協議信息
getservbyname 根據服務名取得相關服務信息
getservbyport 根據端口號取得相關服務信息
getsockopt/setsockopt 獲取/設置一個套接口選項 
ioctlsocket 設置套接口的工作方式
七、UDP調用序列

 

八、TCP調用序列

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章