#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <assert.h>
/*
* This function reports the error and
* exits back to the shell:
*/
static void bail(const char *on_what) {
if (errno != 0) {
fputs(strerror(errno), stderr);
fputs(": ", stderr);
}
fputs(on_what, stderr);
fputc('\n', stderr);
exit(1);
}
int main(int argc, char **argv) {
int z;
int s = -1; /* Socket */
int sndbuf = 0; /* 发送缓冲区大小 */
int rcvbuf = 0;/* 接收缓冲区大小 */
socklen_t optlen; /* 设置项长度 (字节)*/
/*
*建立一个 TCP/IP socket做测试:
*/
s = socket(PF_INET, SOCK_STREAM, 0);
if (s == -1)
bail("socket(2)");
// 设置SO_SNDBUF Size:ss
sndbuf = 5000; /* Send buffer size */
z = setsockopt(s, SOL_SOCKET, SO_SNDBUF, &sndbuf, sizeof sndbuf);
if (z)
bail("setsockopt(s,SOL_SOCKET,"
"SO_SNDBUF)");
/** 设置SO_RCVBUF 大小: */
rcvbuf = 8192; /* Send buffer size */
z = setsockopt(s, SOL_SOCKET, SO_RCVBUF, &rcvbuf, sizeof rcvbuf);
if (z)
bail("setsockopt(s,SOL_SOCKET,"
"SO_RCVBUF)");
/*
* 检查上面的设置
* Get socket option SO_SNDBUF:
*/
optlen = sizeof sndbuf;
z = getsockopt(s, SOL_SOCKET, SO_SNDBUF, &sndbuf, &optlen);
if (z)
bail("getsockopt(s,SOL_SOCKET,"
"SO_SNDBUF)");
assert(optlen == sizeof sndbuf);
/* * 得到设置的socket选项 SO_SNDBUF:*/
optlen = sizeof rcvbuf;
z = getsockopt(s, SOL_SOCKET, SO_RCVBUF, &rcvbuf, &optlen);
if (z)
bail("getsockopt(s,SOL_SOCKET,"
"SO_RCVBUF)");
assert(optlen == sizeof rcvbuf);
/* * 输出缓冲区的大小:*/
printf("Socket s : %d\n", s);
printf(" Send buf: %d bytes\n", sndbuf);
}
分享到:
相关推荐
详细介绍setsockopt&getsockopt函数的用法, 一看就会用。。
linux网络编程通过setsockopt函数使socket号重用.docx
本书通过55个精彩的实例,全面剖析了在Linux下编写网络应用程序的方法,并阐述了网络协议架构和开发规范。为了适应不同读者的需要,本书从最基本的Linux系统操作到网络技术的基本理念,逐步深入至Linux/UNIX下具体的...
int getsockopt ( int sockfd, int level, int option_name, void* option_value, socklen_t* restrict option_len ); int setsockopt ( int sockfd, int level, int option_name, const void* option_value, ...
1.1 网络的历史.......................................................................................................1 1.2 OSI 模型........................................................................
Linux kernel ip_setsockopt()整数溢出漏洞.pdf
6.6.9 setsockopt() 和getsockopt() 函数... 157 6.6.10 getpeername()函数............ 157 6.6.11 gethostname()函数............ 158 6.7 DNS 的操作................. 158 6.7.1 理解DNS........... 158 6.7.2 ...
当我们创建了一个TCP套接字的时候,我们只是负责把我们要发送的内容...在上面的实例中,由于我们要修改我们的源IP地址,所以我们使用了setsockopt函数,如果我们只是修改TCP数据,那么IP数据一样也可以由系统来创建的。
linux下简单的C/S模式的TCP编程,应用select()处理阻塞问题。 setsockopt()处理重启服务器出现“Address already in use”的情况。
setsockopt函数使用说明 setsockopt函数使用说明
在TCP/IP网络编程中,利用setsockopt()函数,设置套接字的属性,可以修改发送缓存,接受缓存的大小,发送等待时间...
setsockopt详解 设置套接口的选项. setsockopt()函数用于任意类型、任意状态套接口的设置选项值
setsockopt()改善程序的健壮性 ,详细介绍了这个函数的各种实用方法,配备了非常丰富的例子。
setsockopt 设置socket 详细用法.doc
1.1 网络的历史................................................................. ...................................... 1 1.2 OSI 模型....................................................................
setsockopt参数详解 该函数不同参数所对应的意思,以及部分举例等。。 较为全面。
目录 历史 前言 I. C语言入门 1. 程序的基本概念 1. 程序和编程语言 2. 自然语言和形式语言 ...3. 在Linux C编程中使用Unicode和UTF-8 B. GNU Free Documentation License Version 1.3, 3 November 2008 参考书目 索引
《Windows Sockets网络编程》是WindowsSockets网络编程领域公认的经典著作,由Windows Sockets2.0规范解释小组负责人亲自执笔,权威性毋庸置疑。它结合大量示例,对WindowsSockets规范进行了深刻地解读,系统讲解了...
网络编程的一些东东 socket, ioctlsock setsockopt fctnl