c语言程序开发中连接是,C语言中等待socket连接和对socket定位的方法
C語(yǔ)言listen()函數(shù):等待連接頭文件:
#include
定義函數(shù):
int listen(int s,int backlog);
函數(shù)說(shuō)明:listen()用來(lái)等待參數(shù)s 的socket 連線. 參數(shù)backlog 指定同時(shí)能處理的最大連接要求,如果連接數(shù)目達(dá)此上限則client 端將收到ECONNREFUSED 的錯(cuò)誤. Listen()并未開(kāi)始接收連線,只是設(shè)置socket 為listen 模式,真正接收client 端連線的是accept(). 通常listen()會(huì)在socket(),bind()之后調(diào)用,接著才調(diào)用accept().
返回值:成功則返回0,失敗返回-1,錯(cuò)誤原因存于errno
附加說(shuō)明:listen()只適用SOCK_STREAM 或SOCK_SEQPACKET 的socket 類(lèi)型. 如果socket 為AF_INET 則參數(shù)backlog 最大值可設(shè)至128.
錯(cuò)誤代碼:
EBADF 參數(shù)sockfd 非合法socket 處理代碼
EACCESS 權(quán)限不足
EOPNOTSUPP 指定的socket 并未支援listen 模式.
C語(yǔ)言bind()函數(shù):對(duì)socket定位頭文件:
#include #include
定義函數(shù):int bind(int sockfd,struct sockaddr * my_addr,int addrlen);
函數(shù)說(shuō)明:bind()用來(lái)設(shè)置給參數(shù)sockfd 的socket 一個(gè)名稱(chēng). 此名稱(chēng)由參數(shù)my_addr 指向一sockaddr 結(jié)構(gòu),對(duì)于不同的socket domain 定義了一個(gè)通用的數(shù)據(jù)結(jié)構(gòu)
struct sockaddr
{
unsigned short int sa_family;
char sa_data[14];
};
1、sa_family 為調(diào)用socket()時(shí)的domain 參數(shù),即AF_xxxx 值.
2、sa_data 最多使用14 個(gè)字符長(zhǎng)度.
此sockaddr 結(jié)構(gòu)會(huì)因使用不同的socket domain 而有不同結(jié)構(gòu)定義,例如使用AF_INET domain,其socketaddr 結(jié)構(gòu)定義便為
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 編號(hào)
3、sin_addr. s_addr 為IP 地址 sin_zero 未使用.
參數(shù) addrlen 為sockaddr 的結(jié)構(gòu)長(zhǎng)度.
返回值:成功則返回0,錯(cuò)誤原因存于errno 中.
錯(cuò)誤代碼:
1、EBADF 參數(shù)sockfd 非合法socket 處理代碼.
2、EACCESS 權(quán)限不足
3、ENOTSOCK 參數(shù)sockfd 為一文件描述詞,非socket.
總結(jié)
如果覺(jué)得編程之家網(wǎng)站內(nèi)容還不錯(cuò),歡迎將編程之家網(wǎng)站推薦給程序員好友。
本圖文內(nèi)容來(lái)源于網(wǎng)友網(wǎng)絡(luò)收集整理提供,作為學(xué)習(xí)參考使用,版權(quán)屬于原作者。
小編個(gè)人微信號(hào) jb51ccc
喜歡與人分享編程技術(shù)與工作經(jīng)驗(yàn),歡迎加入編程之家官方交流群!
總結(jié)
以上是生活随笔為你收集整理的c语言程序开发中连接是,C语言中等待socket连接和对socket定位的方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: c语言程序怎么颠倒数据,急求如何将下列C
- 下一篇: pat数素数 20 c语言,PAT乙级C