加班到十点,没有时间,弄个输出套接字接收和返回的Buffer大小的程序
write by 九天雁翎(JTianLing) -- blog.csdn.net/vagrxie
讨论新闻组及文件
在Ubuntu8.04桌面版下,测试的结果为
Socket default Receive Buffer is 87380
Socket default Send Buffer is 16384
与作者在freebsd4.8中的稍有不同,接收缓冲区略大,发送缓冲区略小。
作者得出的结果分别是57344,32768
在我的系统中,接收的缓存实在是够大
源代码:
1 #include"unp.h"
2
3 intmain(intargc, char**argv)
4 {
5 intsockfd, n;
6 /* struct sockaddr_inservaddr; */
7 intliRcvSize = 0;
8 socklen_t liRcvLen = sizeof(liRcvSize);
9 intliSndSize = 0;
10 socklen_t liSndLen = sizeof(liSndSize);
11
12 if((sockfd = Socket(AF_INET, SOCK_STREAM, 0)) < 0)
13 {
14 err_sys("Socket Create failed/n");
15 }
16
17 if( ( n = getsockopt(sockfd, SOL_SOCKET, SO_RCVBUF, &liRcvSize, &liRcvLen) ) < 0)
18 {
19 err_sys("getsocketopt recv buffer run failed/n");
20 }
21
22 if( ( n = getsockopt(sockfd, SOL_SOCKET, SO_SNDBUF, &liSndSize, &liSndLen) ) < 0)
23 {
24 err_sys("getsocketopt send buffer run failed/n");
25 }
26
27 close(sockfd);
28
29 printf("Socket default Receive Buffer is %d/n", liRcvSize);
30 printf("Socket default Send Buffer is %d/n", liSndSize);
31
32
33 exit(0);
34 }
Thread model: posix
gcc version 4.2.4 (Ubuntu 4.2.4-1ubuntu4)
纯ANSI C程序
write by 九天雁翎(JTianLing) -- blog.csdn.net/vagrxie
分享到:
相关推荐
该框架包括四个模块:套接字模块、IP数据包捕获模块、IP数据包分析模块和输出模块。 * 套接字模块:负责创建和设置套接字,包括原始套接字的创建和设置。 * IP数据包捕获模块:负责捕获IP数据包,包括使用原始套接...
`recv`函数是TCP/IP套接字API中的一个重要成员,用于接收来自连接到套接字的远程主机的数据。其基本形式为: ```c int recv(SOCKET s, char* buf, int len, int flags); ``` 其中: - `s`:表示套接字句柄。 - `...
总结来说,理解UDP套接字连接的关键在于掌握如何创建和使用UDP套接字,以及如何在无连接的情况下正确地发送和接收数据。在实际应用中,UDP常用于实时性要求高、对数据完整性和顺序性不敏感的场景,如视频流传输、...
关于recv函数buffer大小的设置,当不知道数据长度时如何设置buffer长度,以及buffer长度对实际接收长度的影响。
原始套接字允许应用程序发送和接收未经处理的IP数据包,这包括IP头部和负载。它们可以用来创建自定义的网络协议,或者用于网络监控,例如抓包分析。在Windows中,原始套接字可以通过Winsock API来创建和操作,需要...
主要有两种:Berkeley套接字(通常称为用户级套接字)和原始套接字。用户级套接字处理的是已经由操作系统处理过的、符合特定协议(如TCP或UDP)的数据。而原始套接字则允许程序员访问更低级别的协议头,可以捕获到...
在Windows环境下,UDP(User Datagram Protocol)套接字是网络编程中的一个重要概念,它主要用于实现无连接、不可靠的数据传输。UDP套接字在C语言中编程时,主要涉及以下知识点: 1. **套接字API**: Windows操作...
- Socket(套接字):在计算机网络中,Socket是应用程序通过网络进行通信的接口,它允许两个网络应用程序之间建立连接并进行数据传输。 - TCP/IP协议:Socket通常基于TCP/IP协议族工作,提供可靠的面向连接的通信...
这会返回一个新的套接字描述符,用于与客户端通信。 ```cpp sockaddr_in client; socklen_t client_len = sizeof(client); int new_socket = accept(socket_desc, (struct sockaddr*)&client, &client_len); ``...
在上述代码中,我们创建了一个原始套接字并绑定到本地地址和端口,然后进入一个无限循环,不断接收数据包,解析它们,然后将接收到的数据包原封不动地转发到指定的目标地址和端口。 **注意事项和安全问题:** 1. **...
Linux操作系统中的网络编程涉及到各种类型的套接字,包括TCP套接字、UDP套接字以及原始套接字。原始套接字(SOCK_RAW)是一种特殊的套接字类型,允许程序员对网络协议栈进行更底层的控制。在这个场景下,我们将深入...
在将原始套接字设置完毕,使其能按预期目的工作时,就可以通过recv()函数从网卡接收数据了,接收到的原始数据包存放在缓存RecvBuf[]中,缓冲区长度BUFFER_SIZE定义为65535。然后就可以根据前面对IP数据段头、TCP数据...
- 当客户端发起连接请求时,服务器通过调用`Accept()`方法接受连接,并返回一个新的套接字实例用于与客户端通信。 3. **客户端连接**: - 客户端通过调用`Connect()`方法尝试连接到服务器。 4. **数据发送与接收**...
创建一个Socket实例,指定其地址族(通常为InterNetwork表示IPv4)、套接字类型(对于UDP是Dgram,即数据报)和协议类型(UDP)。 2. **IPEndPoint**:这是C#中表示IP地址和端口号的类,用于指定UDP通信的目标或源...
在IT领域,多线程套接字间通信是网络编程中的一个重要主题,特别是在设计高性能、高并发的应用程序时。本文将深入探讨C++语言中如何利用SOCKET API进行多线程间的通信,这对于初学者来说具有重要的学习价值。 首先...
非阻塞套接字则解决了这个问题,它允许应用程序在数据未准备好时,不等待而是立即返回,从而避免了线程的阻塞,实现了异步I/O。 Java NIO引入了一组新的API,包括Channel、Selector和Buffer等概念,用于处理非阻塞I...
套接字是网络通信的基础,它允许程序通过网络发送和接收数据。本篇文章将深入探讨C#中的网络编程套接字,特别是客户端的实现。 ### 1. 套接字基础 套接字是应用程序与网络协议栈交互的接口,可以看作是网络上的通信...
创建一个UDP套接字需要使用`socket()`函数,它返回一个套接字描述符。例如: ```cpp int socket_desc = socket(AF_INET, SOCK_DGRAM, 0); ``` 这里的参数`AF_INET`表示使用IPv4地址族,`SOCK_DGRAM`表示使用UDP...
本篇将详细讲解如何使用C++和Linux系统来创建一个基于原始套接字的嗅探器,用于捕获包括ARP、RARP、TCP和UDP在内的基本数据包。 首先,了解原始套接字的基本概念。在Linux中,原始套接字允许程序绕过传输层,直接与...