日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux socket API / bind

發(fā)布時間:2024/10/14 linux 73 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux socket API / bind 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、函數(shù)原型

#include <sys/socket.h> int bind (int __fd, const struct sockaddr * __addr, socklen_t __len)

? ? ? ? 該函數(shù)調用之前,必創(chuàng)建 socket ,在?linux 內核中,socket 描述符映射為?struct socket ,該結構體中包含了該 socket 所需要的所有信息,包括 server 和 client 的 ip 和 port 等。

? ? ? ? 當通過函數(shù) socket 創(chuàng)建 socket 描述符之后,實際上該描述字對應的結構體里面是沒有內容的,所以為了讓該 socket 動起來,就得將該結構體中所缺失的內容附上,該功能的實現(xiàn) api 就是 bind 。?

二、參數(shù)詳解

1、__fd

socket 函數(shù)返回的描述字,指定被綁定的 socket 。

2、__addr

保存地址(ip + port 或者 絕對路徑)信息的結構。包括一下三種:

(1)sockaddr

struct sockaddr {uint16_t sa_family; char sa_data[14]; };

一般不直接使用,而是用它的變體?sockaddr_insockaddr_un

(2)sockaddr_in

struct sockaddr_in {//協(xié)議族uint16_t sin_family;//端口號(網(wǎng)絡字節(jié)序)uint16_t sin_port; //IP 地址(網(wǎng)絡字節(jié)序)uint32_t s_addr; //為了保持與 struct sockaddr 結構體大小相等,故填充之用。unsigned char sin_zero[8]; };

協(xié)議族是 AF_INET 并且 socket 的類型是 SOCK_STREAM 和 SOCK_DGRAM 時使用。?

(3)sockaddr_un

struct sockaddr_un {uint16_t sun_family;// 絕對路徑。char sun_path[108]; };

協(xié)議族是 AF_UNIX 時使用。?

3、__len

標示實際使用的存儲地址信息的結構的大小,例如:

sizeof(sockaddr_in) sizeof(sockaddr_un)

三、返回值

成功返回0,失敗返回 -1 ,并置 errno 。

?

(SAW:Game Over!)

總結

以上是生活随笔為你收集整理的linux socket API / bind的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。