socket函数返回值分析

博客详细介绍了服务端和客户端Socket编程相关函数。服务端涉及WSAStartup、socket、bind等函数,说明了各函数参数、返回值及错误处理;客户端主要介绍了connect函数,区分了阻塞和非阻塞时的返回情况及错误码获取。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

服务端:

1 WSAStartup(版本,本机的最高版本)

WSAStartup函数的第一个参数是加载WinSock库的版本,WSAStartup函数的第二个参数中设置使用的WinSock库的版本,当正确初始化时,WSAStartup会返回0。但我在WSAStartup函数的第一个参数中胡乱设置了一个版本号,WSAStartup仍然会返回0。

如果在WSAStartup函数第一个参数中设置的版本号不存在,那么会自动使用WinSock库中最低的版本1.1。

2socket(协议方案,数据流/快形式,附加协议)

socket 成功

INVALID_SOCKET 错误

socket返回的值是一个文件描述符,SOCKET类型本身也是定义为int的,既然是文件描述符,那么在系统中都当作是文件来对待的,0,1,2分别表示标准输入、标准输出、标准错误。所以其他打开的文件描述符都会大于2, 错误时就返回 -1. 这里INVALID_SOCKET 也被定义为 -1

3 bind(socket返回的socket,定义的SOCKADDR_IN 结构体,<-这个的大小)

0 成功

SOCKET_ERROR 错误(<0)可用WSAGETLASTERROR 函数取错误码

4 listen(socket返回的socket,队列长度)

0 成功

SOCKET_ERROR 错误(<0)可用WSAGETLASTERROR 函数取错误码

5 accept (socket返回的socket,指向的定义的SOCKADDR_IN 结构体指针,指针的大小)

0 成功

SOCKET_ERROR 错误(<0)可用WSAGETLASTERROR 函数取错误码

6 recv/recvfrom (socket返回的socket,要放在的BUF,BUF长度,接收方式)

0 返回收到的字节数目

=0断开连接

<0错误

7 send/sendto(socket返回的socket,要发的,发的长度,接收方式)

0 返回发的字节数目

=0断开连接

<0错误

客户端:

connect (socket返回的socket,定义的SOCKADDR_IN 结构体,<-这个的大小)

阻塞时:

0 成功

SOCKET_ERROR 错误(<0)可用WSAGETLASTERROR 函数取错误码

非阻塞时:不能立即返回值,连接 返回SOCKET_ERROR

WSAGETLASTERROR 函数返回WSAEWOULDBLOCK

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值