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

头文件:#include <sys/types.h>   #include <sys/socket.h>

定义函数: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 指针指向无法存取的内存空间.

时间: 2024-07-31 17:33:44

C语言setsockopt()函数:设置socket状态的相关文章

setsockopt设置socket状态

setsockopt设置socket状态 1.closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket:BOOL bReuseaddr=TRUE;setsockopt(s,SOL_SOCKET ,SO_REUSEADDR,(const char*)&bReuseaddr,sizeof(BOOL)); 2. 如果要已经处于连接状态的soket在调用closesocket后强制关闭,不经历TIME_WAIT的过程:BOOL bDontLinger = FAL

C语言sendto()函数-经socket传送数据以及recvfrom函数《转》

相关函数:send, sendmsg, recv, recvfrom, socket 头文件:#include <sys/types.h>   #include <sys/socket.h> 定义函数:int sendto(int s, const void * msg, int len, unsigned int flags, const struct sockaddr * to, int tolen); 函数说明:sendto() 用来将数据由指定的socket 传给对方主机.

C函数篇(setsockopt函数②)

套接口选项 在前面的几章中,我们讨论了使用套接口的基础内容.现在我们要来探讨一些可用的其他的特征.在我们掌握了这一章的概念之后,我们就为后面的套接口的高级主题做好了准备.在这一章,我们将会专注于下列主题: 如何使用getsockopt(2)函数获得套接口选项值 如何使用setsockopt(2)函数设置套接口选项值 如何使用这些常用的套接口选项 得到套接口选项 有时,一个程序需要确定为当前为一个套接口进行哪些选项设置.这对于一个子程序库函数尤其如此,因为这个库函数并不知道为这个套接口进行哪些设置

该函数设置由不同线程产生的窗口的显示状态。

using System;using System.Collections.Generic;using System.Linq;using System.Windows.Forms;using System.Runtime.InteropServices;using System.Diagnostics;using System.Reflection; namespace WindowsFormsApplication1{ static class Program { /// <summary>

Linux下getsockopt/setsockopt 函数说明

[ getsockopt/setsockopt系统调用 功能描述:  获取或者设置与某个套接字关联的选 项.选项可能存在于多层协议中,它们总会出现在最上面的套接字层.当操作套接字选项时,选项位于的层和选项的名称必须给出.为了操作套接字层的选项,应该 将层的值指定为SOL_SOCKET.为了操作其它层的选项,控制选项的合适协议号必须给出.例如,为了表示一个选项由TCP协议解析,层应该设定为协议 号TCP. 用法:  #include #include int getsockopt(int sock

setsockopt()函数功能介绍

功能描述: 获取或者设置与某个套接字关联的选 项.选项可能存在于多层协议中,它们总会出现在最上面的套接字层.当操作套接字选项时,选项位于的层和选项的名称必须给出.为了操作套接字层的选项,应该 将层的值指定为SOL_SOCKET.为了操作其它层的选项,控制选项的合适协议号必须给出.例如,为了表示一个选项由TCP协议解析,层应该设定为协议 号TCP. 用法:#include <sys/types.h>#include <sys/socket.h> int getsockopt(int

setsockopt函数功能及参数详解

Socket描述符选项[SOL_SOCKET] #include <sys/socket.h> int setsockopt( int socket, int level, int option_name,const void *option_value, size_t ,ption_len); 第一个参数socket是套接字描述符.第二个参数level是被设置的选项的级别,如果想要在套接字级别上设置选项,就必须把level设置为 SOL_SOCKET. option_name指定准备设置的选

设置socket接收和发送超时的一种方式

Linux环境设置Socket接收和发送超时: 须如下定义:struct timeval timeout = {3,0};  //设置发送超时setsockopt(socket,SOL_SOCKET,SO_SNDTIMEO,(char *)&timeout,sizeof(struct timeval)); //设置接收超时setsockopt(socket,SOL_SOCKET,SO_RCVTIMEO,(char *)&timeout,sizeof(struct timeval)); 另外

[Lua]在C函数中保存状态--注册表,环境表,upvalue

什么叫做在C函数中保存状态?比如你现在使用Lua调用了C函数Func1,但是Func1中有一些数据在调用完以后保存下来,供以后使用.而这些数据就是所谓的状态,也就是我们需要保存的东东.有人就会说了,Lua调用C时,把所有的需要保存的状态都返回到Lua中,当调用下一个函数时,将需要的状态当做参数再传进去,不错,是一个办法,但是很麻烦.方法一:注册表:方法二:环境:方法三:upvalue. 注册表是一个全局的table,它只能被C代码访问.通常,可以用它来保存那种需要在几个模块中共享的数据: 但是,