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 的定义正是此值
|
相关文章
- ASP.NET本地开发时常见的配置错误及解决方法? 2025-06-10
- ASP.NET自助建站系统的数据库备份与恢复操作指南 2025-06-10
- 个人网站服务器域名解析设置指南:从购买到绑定全流程 2025-06-10
- 个人网站搭建:如何挑选具有弹性扩展能力的服务器? 2025-06-10
- 个人服务器网站搭建:如何选择适合自己的建站程序或框架? 2025-06-10
- 2025-07-10 怎样使用阿里云的安全工具进行服务器漏洞扫描和修复?
- 2025-07-10 怎样使用命令行工具优化Linux云服务器的Ping性能?
- 2025-07-10 怎样使用Xshell连接华为云服务器,实现高效远程管理?
- 2025-07-10 怎样利用云服务器D盘搭建稳定、高效的网站托管环境?
- 2025-07-10 怎样使用阿里云的安全组功能来增强服务器防火墙的安全性?
快网idc优惠网
QQ交流群
-
Spring Boot整合logback一个简单的日志集成架构
2025-05-29 61 -
2025-05-29 50
-
2025-05-25 100
-
thinkphp 5框架实现登陆,登出及session登陆状态检测功能示例
2025-05-29 64 -
2025-05-29 59