C语言设置和取得socket状态的相关函数用法

2025-05-29 0 58

C语言setsockopt()函数:设置socket状态
头文件:

?

1
#include <sys/types.h> #include <sys/socket.h>

定义函数:

?

1
int setsockopt(int s, int level, int optname, const void * optval, ,socklen_toptlen);

函数说明:setsockopt()用来设置参数s 所指定的socket 状态. 参数level 代表欲设置的网络层, 一般设成SOL_SOCKET 以存取socket 层. 参数optname 代表欲设置的选项, 有下列几种数值:
SO_DEBUG 打开或关闭排错模式
SO_REUSEADDR 允许在bind ()过程中本地地址可重复使用
SO_TYPE 返回socket 形态.
SO_ERROR 返回socket 已发生的错误原因
SO_DONTROUTE 送出的数据包不要利用路由设备来传输.
SO_BROADCAST 使用广播方式传送
SO_SNDBUF 设置送出的暂存区大小
SO_RCVBUF 设置接收的暂存区大小
SO_KEEPALIVE 定期确定连线是否已终止.
SO_OOBINLINE 当接收到OOB 数据时会马上送至标准输入设备
SO_LINGER 确保数据安全且可靠的传送出去.

参数 optval 代表欲设置的值, 参数optlen 则为optval 的长度.

返回值:成功则返回0, 若有错误则返回-1, 错误原因存于errno.

附加说明:
1、EBADF 参数s 并非合法的socket 处理代码
2、ENOTSOCK 参数s 为一文件描述词, 非socket
3、ENOPROTOOPT 参数optname 指定的选项不正确.
4、EFAULT 参数optval 指针指向无法存取的内存空间.

C语言getsockopt()函数:取得socket 状态
头文件:

?

1
#include <sys/types.h> #include <sys/socket.h>

定义函数:

?

1
int getsockopt(int s, int level, int optname, void* optval, socklen_t* optlen);

函数说明:getsockopt()会将参数s 所指定的socket 状态返回. 参数optname 代表欲取得何种选项状态, 而参数optval 则指向欲保存结果的内存地址, 参数optlen 则为该空间的大小. 参数level、optname 请参考setsockopt().

返回值:成功则返回0, 若有错误则返回-1, 错误原因存于errno

错误代码:
1、EBADF 参数s 并非合法的socket 处理代码
2、ENOTSOCK 参数s 为一文件描述词, 非socket
3、ENOPROTOOPT 参数optname 指定的选项不正确
4、EFAULT 参数optval 指针指向无法存取的内存空间

范例

?

1

2

3

4

5

6

7

8

9

10

11

12

13
#include <sys/types.h>

#include <sys/socket.h>

main()

{

int s;

int optval;

int optlen = sizeof(int);

if((s = socket(AF_INET, SOCK_STREAM, 0)) < 0)

perror("socket");

getsockopt(s, SOL_SOCKET, SO_TYPE, &optval, &optlen);

printf("optval = %d\\n", optval);

close(s);

}

执行:

?

1
optval = 1 //SOCK_STREAM 的定义正是此值

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 C语言设置和取得socket状态的相关函数用法 https://www.kuaiidc.com/107115.html

相关文章

发表评论
暂无评论