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定位的方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言程序怎么颠倒数据,急求如何将下列C
- 下一篇: pat数素数 20 c语言,PAT乙级C