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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

c语言程序开发中连接是,C语言中等待socket连接和对socket定位的方法

發布時間:2025/3/21 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言程序开发中连接是,C语言中等待socket连接和对socket定位的方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

C語言listen()函數:等待連接頭文件:

#include

定義函數:

int listen(int s,int backlog);

函數說明:listen()用來等待參數s 的socket 連線. 參數backlog 指定同時能處理的最大連接要求,如果連接數目達此上限則client 端將收到ECONNREFUSED 的錯誤. Listen()并未開始接收連線,只是設置socket 為listen 模式,真正接收client 端連線的是accept(). 通常listen()會在socket(),bind()之后調用,接著才調用accept().

返回值:成功則返回0,失敗返回-1,錯誤原因存于errno

附加說明:listen()只適用SOCK_STREAM 或SOCK_SEQPACKET 的socket 類型. 如果socket 為AF_INET 則參數backlog 最大值可設至128.

錯誤代碼:

EBADF 參數sockfd 非合法socket 處理代碼

EACCESS 權限不足

EOPNOTSUPP 指定的socket 并未支援listen 模式.

C語言bind()函數:對socket定位頭文件:

#include #include

定義函數:int bind(int sockfd,struct sockaddr * my_addr,int addrlen);

函數說明:bind()用來設置給參數sockfd 的socket 一個名稱. 此名稱由參數my_addr 指向一sockaddr 結構,對于不同的socket domain 定義了一個通用的數據結構

struct sockaddr

{

unsigned short int sa_family;

char sa_data[14];

};

1、sa_family 為調用socket()時的domain 參數,即AF_xxxx 值.

2、sa_data 最多使用14 個字符長度.

此sockaddr 結構會因使用不同的socket domain 而有不同結構定義,例如使用AF_INET domain,其socketaddr 結構定義便為

struct socketaddr_in

{

unsigned short int sin_family;

uint16_t sin_port;

struct in_addr sin_addr;

unsigned char sin_zero[8];

};

struct in_addr

{

uint32_t s_addr;

};

1、sin_family 即為sa_family

2、sin_port 為使用的port 編號

3、sin_addr. s_addr 為IP 地址 sin_zero 未使用.

參數 addrlen 為sockaddr 的結構長度.

返回值:成功則返回0,錯誤原因存于errno 中.

錯誤代碼:

1、EBADF 參數sockfd 非合法socket 處理代碼.

2、EACCESS 權限不足

3、ENOTSOCK 參數sockfd 為一文件描述詞,非socket.

總結

如果覺得編程之家網站內容還不錯,歡迎將編程之家網站推薦給程序員好友。

本圖文內容來源于網友網絡收集整理提供,作為學習參考使用,版權屬于原作者。

小編個人微信號 jb51ccc

喜歡與人分享編程技術與工作經驗,歡迎加入編程之家官方交流群!

總結

以上是生活随笔為你收集整理的c语言程序开发中连接是,C语言中等待socket连接和对socket定位的方法的全部內容,希望文章能夠幫你解決所遇到的問題。

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