![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
socket
文章平均质量分 80
摩力克
拥有超过15年开发经验,精通网络通信、网络安全和Python开发,希望通过分享和大家共同进步。
展开
-
Linux下send、sendto、sendmsg函数分析
从网上查到了一些关于这几个函数的使用及注意事项,现终结如下:功能描述:发送消息,send只可用于基于连接的套接字,send 和 write唯一的不同点是标志的存在,当标志为0时,send等同于write。sendto 和 sendmsg既可用于无连接的套接字,也可用于基于连接的套接字。除了套接字设置为非阻塞模式,调用将会阻塞直到数据被发送完。用法:#incl转载 2015-12-29 10:12:17 · 6300 阅读 · 0 评论 -
socket之send和recv原理剖析
谈到网络socket编程, 我们不得不提两个基本也很重要的函数:send和recv. 对socket编程理解不深的童鞋容易产生这样一个错误的认识: send函数是用来发送数据, 而recv函数是用来接收数据的, 其实, 这种观点是稍微有点偏颇的, 掩盖了本质。 下面, 我们看一幅图, 了解一下send和recv函数所处的位置(这幅图是我在网上找的, 不太清晰, 请凑合看一下)转载 2015-12-18 15:31:26 · 1251 阅读 · 0 评论 -
epoll 的accept , read, write(重要)
在一个非阻塞的socket上调用read/write函数, 返回EAGAIN或者EWOULDBLOCK(注: EAGAIN就是EWOULDBLOCK)从字面上看, 意思是:* EAGAIN: 再试一次* EWOULDBLOCK: 如果这是一个阻塞socket, 操作将被block* perror输出: Resource temporarily unav转载 2015-12-18 15:57:20 · 701 阅读 · 0 评论 -
TCP接收/发送滑动窗口与内核接收/发送缓冲区之间的关系
在有关TCP连接的很多配置中,有很多选项有的配置 net.ipv4.tcp_rmem:这个参数定义了TCP接收缓冲(用于TCP接收滑动窗口)的最小值、默认值、最大值net.ipv4.tcp_wmem:这个参数定义了TCP发送缓冲(用于TCP发送滑动窗口)的最小值、默认值、最大值netdev_max_backlog:当网卡接收数据包的速度大于内核处理的速度时,会有一个队列转载 2015-12-18 16:05:24 · 1783 阅读 · 0 评论 -
recv函数返回值说明
recv函数int recv( SOCKET s, char FAR *buf, int len, int flags);不论是客户还是服务器应用程序都用recv函数从TCP连接的另一端接收数据。该函数的第一个参数指定接收端套接字描述符;第二个参数指明一个缓冲区,该缓冲区用来存放recv函数接收到的数据;第三个参数指明buf的长度;第四个参数一般置0。这里只描述同步So转载 2015-12-18 16:29:38 · 747 阅读 · 0 评论 -
socket编程中父子进程、兄弟进程的端口问题
最近在linux下弄一些socket方面的东西,涉及到父子进程、兄弟进程间的端口、socket句柄的问题,主要问题集中在两个方面:1、假如父进程监听A端口,那么在client端来连接,并fork子进程,那么子进程通过那个端口与client交换数据呢?通过实验显示,还是端口A。为什么?端口复用技术!那么,实验是怎么做的呢?其实很简单,server端启动,在fork出子进程时保证每个子转载 2016-01-12 16:57:06 · 5392 阅读 · 0 评论 -
内核udp报文截取、修改和发送
近来做一个产品需要在网关上获取特定UDP端口(假设是1000端口)的报文,并将其转发给其它设备的1000端口。虽然此类文章网上已经有很多了,但我还是贴上来,这样自己也做下记录,大家也多一份参考。下面只给出了代码片段,自己慢慢调试。我们假设网络拓扑如下所示:LINUX --------- --------- --------- | PC-1 |-------| Server |转载 2016-01-15 14:04:50 · 2284 阅读 · 0 评论 -
浅谈tcp_nodelay的作用
今天在用nginx作web缓存的时候,发现在http里加入这样个参数,能有效的提高数据的实时响应性,那就是tcp_nodelay.下面我们来说说tcp_nodelay的原理: TCP_NODELAY和TCP_CORK基本上控制了包的“Nagle化”,这里我们主要讲TCP_NODELAY.Nagle化在这里的含义是采用Nagle算法把较小的包组装为更大的帧。JohnNagle是Nag转载 2017-08-30 16:37:06 · 1398 阅读 · 0 评论