1.In general, it is more efficient for the application to write large messages and have them fragmented and reassembled by IP, than to have the application write multiple times.
原因就在于系统调用system_call从应用态转到内核态等系列复杂过程带来的性能的损耗
2.tcp_sendspace
TCP send buffer size can limit how much data the application can send before the application is put to sleep. The TCP socket send buffer is used to buffer the application data in the kernel using mbufs/clusters before it is sent beyond the socket and TCP layer. The default size of this buffer is specified by the parameter tcp_sendspace, but you can use the setsockopt() subroutine to override it.
If the amount of data that the application wants to send is smaller than the send buffer size and also smaller than the maximum segment size and if TCP_NODELAY is not set, then TCP will delay up to 200 ms, until enough data exists to fill the send buffer or the amount of data is greater than or equal to the maximum segment size, before transmitting the packets.
If TCP_NODELAY is set, then the data is sent immediately (useful for request/response type of applications). If the send buffer size is less than or equal to the maximum segment size (ATM and SP switches can have 64 K MTUs), then the application's data will be sent immediately and the application must wait for an ACK before sending another packet (this prevents TCP streaming and could reduce throughput).
TCP发送数据时首先要看发送缓冲区是否有足够的空间存放待发送消息,如果有则复制到发送缓冲区,并且需要等待ack回来才会删除该数据,如果发送缓冲区没有足够空间则会等待或者返回EWOULDBLOCK(非阻塞) ----TCPv2
Note: To maintain a steady stream of packets, increase the socket send buffer size so that it is greater than the MTU (3-10 times the MTU size could be used as a starting point).
If an application does nonblocking I/O (specified O_NDELAY or O_NONBLOCK on the socket), then if the send buffer fills up, the application will return with an EWOULDBLOCK/EAGAIN error rather than being put to sleep. Applications must be coded to handle this error (suggested solution is to sleep for a short while and try to send again).
分享到:
相关推荐
在IT行业中,网络编程是不可或缺的一部分,而TCP Socket通信作为网络通信的基础,其调试工作尤为重要。标题提到的“好用的Tcp Socket调试工具”显然是一款能够帮助开发者解决TCP Socket通信问题的有效辅助软件。描述...
最近有个项目模块需要用到TCP Socket通讯,遇到了一个大坑,所以做了这个Demo。 本Demo主要实现了安卓(Android)TCP 客户端(Client)和服务器(Server)Demo的Socket通讯。以及对接硬件的项目数据在十六进制&&byte&&int...
本文将详细解析使用C#语言编写的TCP socket服务端代码,特别是针对GPRS(General Packet Radio Service)环境的服务端测试程序。 首先,TCP是一种面向连接的、可靠的传输协议,它确保了数据的顺序传输和无丢失特性...
SocketTcp_TcpSocket服务端框架是一个专为开发者设计的简单且通用性强的TCP服务器实现。这个框架旨在简化网络编程过程,让开发者能够快速构建自己的TCP服务应用,只需要对原有代码进行少量修改,即可轻松地将其集成...
标题中的"WIN32 TCPsocket"指的是在Windows 32位平台上使用TCP协议进行网络通信的编程技术。TCP(Transmission Control Protocol)是一种面向连接、可靠的传输协议,它保证了数据包在互联网上的有序和无损传输。在...
TCP套接字(TCP Socket)是网络通信中的一个重要概念,它是基于传输控制协议TCP的应用程序接口,用于在互联网上实现两台计算机之间的可靠数据传输。TCP确保数据在传输过程中的完整性,通过提供连接导向、面向字节流...
本文将深入探讨如何在Visual C++(简称VC++)环境下,利用TCP套接字进行网络编程,同时分享一个名为“TcpSocket_vc”的经典类库,它在实际项目中表现出色,值得学习和使用。 TCP是一种面向连接的、可靠的传输协议,...
在IT行业中,TCP Socket通信是网络编程的基础,广泛应用于各种客户端-服务器应用程序。"Tcp Socket client 实例"指的是一个使用TCP协议的客户端示例程序,它通过Socket接口与服务器进行数据交互。事件驱动是一种编程...
在IT行业中,网络通信是至关重要的一个领域,TCP(传输控制协议)和SOCKET作为其基础,被广泛应用于各种应用程序的开发中。本示例代码着重于如何利用.NET框架实现基于TCP SOCKET的线程池通信,这对于高效处理大量...
本资源"欧姆龙TCP UDP Socket网络通讯.zip"提供了关于如何利用TCP和UDP协议通过Socket进行欧姆龙PLC设备通信的实例。以下是关于这个主题的详细知识点: 1. **Socket基础**: - Socket是一种网络编程接口,用于在...
查看本机tcp socket当前连接数(并发量).zip
在IT行业中,网络通信是至关重要的一个领域,TCP(传输控制协议)和Socket编程是其中的基础。本实例将深入探讨如何使用C#语言实现TCP Socket通信。C#是一门广泛应用于Windows平台的面向对象的编程语言,其强大的.NET...
TCP套接字(TCP Socket)是网络编程中的一个重要概念,它是基于传输控制协议TCP的应用程序接口,用于在互联网上实现两台计算机之间的可靠通信。TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议,而套接字...
tcp socket 聊天程序tcp socket 聊天程序tcp socket 聊天程序tcp socket 聊天程序tcp socket 聊天程序tcp socket 聊天程序tcp socket 聊天程序tcp socket 聊天程序tcp socket 聊天程序tcp socket 聊天程序
在IT行业中,网络通信是至关重要的一个领域,而TCP Socket编程是实现网络通信的基础。本文将深入探讨TCP Socket,以及如何使用它来实现简单的TCP协议。TCP(Transmission Control Protocol)是一种面向连接、可靠的...
通过UDP和TCP发送和接收字节或文本(UTF-8*) 在自己的线程中异步运行(不影响游戏性能) 独立于蓝图 多台服务器同时可用 IPv4和IPv6 AES加密和解密 通过TCP发送和接收文件(无RAM消耗) RCON协议 不同的目录和文件...
压缩包文件"TCPSocket"可能包含了示例代码,这些代码可以帮助初学者更好地理解TCP Socket编程的实践。通过阅读和运行这些代码,你可以学习如何在Python、C++、Java等语言中实现TCP Socket客户端和服务端。 在编程...
Qt5作为一个强大的跨平台应用程序开发框架,提供了丰富的功能来处理网络编程,其中包括TCP套接字(TCPsocket)的使用。本篇将详细介绍如何利用Qt5的TCPsocket实现文件的发送与接收。 首先,TCP(Transmission ...
标题中的“Modbus-Tcp采用Socket与NModbus两种方式”指的是在实现基于Modbus-TCP协议的通信时,采用了两种不同的技术手段:Socket编程和使用NModbus库。这两种方法都是为了与支持Modbus-TCP协议的设备进行数据交换。...
在IT行业中,网络通信是不可或缺的一部分,而TCP(Transmission Control Protocol)和Socket是实现网络通信的基础。本教程将深入探讨如何使用C#语言编写原生的TCP Socket客户端和服务端程序。TCP是一种面向连接的、...