![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
socket网络编程
文章平均质量分 50
jwybobo2007
站在脚下看世界
展开
-
TCP TIME_WAIT详解
TIME_WAIT状态 TCP要保证在所有可能的情况下使得所有的数据都能够正确被投递。当关闭一个 socket 连接时,主动关闭一端的 socket 将进入TIME_WAIT状态,而被动关闭一方则转入CLOSED状态。见图解。当一个socket关闭的时候,是通过两端互发信息的四次握手过程完成的,当一端调用close()时,就说明本端没有数据再要发送了。这好似看来在握手完成以后,socket就都应该处于关闭CLOSED状态了。但这有两个问题, 第一:我们没有任何机制保证最后的一个ACK能够正常送达 第二:网络转载 2010-10-12 19:16:00 · 1743 阅读 · 0 评论 -
简单RTP发送类c++实现(linux和window通用)
我之前编译了jrtplib 3.9.1,并且在项目中使用,结果发现在用这个库时,程序体积有增加了300多K,感觉实在是有点笨重,我无法就是用来发送rtp包而已。想想还是自己重新实现一个简单的类用用拉倒了,所以有了下面的代码。头文件:/*!@brief 简单rtp库@file easy_rtp.h*/#ifndef _EASY_RTP_H#define _EASY_RTP_H#原创 2012-07-13 10:35:48 · 5863 阅读 · 6 评论 -
TCP实现P2P通信、TCP穿越NAT的方法、TCP打洞
下载源代码这个标题用了两个顿号三个名称,其实说得是同一个东西,只是网上有不同的说法罢了,另外好像还有人叫TCP打孔(我的朋友小妞听说后问“要打孔啊,要不要我帮你去借个电钻过来啊?”“~!·¥%……·!”)。闲话少说,我们先看一下技术背景:Internet的迅速发展以及IPv4 地址数量的限制使得网络地址翻译(NAT,Network Address Trans2lation)设备得到转载 2010-09-28 23:35:00 · 3694 阅读 · 2 评论 -
从缓冲上看阻塞与非阻塞socket在发送接收上的区别
最近在网络上看到一些帖子以及回复,同时又搜索了一些网络上关于阻塞非阻塞的区别,发现很多人在描述两者的发送接收时操作返回以及缓冲区处理的区别时有不同程度的误解。所以我想写一篇文章来纠正错误,并作为记录方便查阅,如有转载,注明作者(jwybobo2007)以及出处即可。 首先soc原创 2011-01-26 11:03:00 · 10758 阅读 · 29 评论 -
libcurl提交表单上传文件
<br />不多说了,curl的http上传文件代码示例,有需要的可以参考。<br /> <br />int http_post_file(const char *url, const char *user, const char *pwd, const char *filename)<br />{<br /> assert(url != NULL);<br /> assert(user != NULL);<br /> assert(pwd != NULL);<br />原创 2011-04-06 12:50:00 · 5755 阅读 · 4 评论 -
wlan scan record
http://msdn.microsoft.com/en-us/library/ms706556%28v=VS.85%29.aspx原创 2011-03-29 22:38:00 · 1008 阅读 · 0 评论 -
TCP滑动窗口和SO_RCVBUF之间的实际关系
上次转载了一篇文章http://blog.csdn.net/jwybobo2007/archive/2010/12/30/6107419.aspx,上面提到了TCP窗口大小与SO_RCVBUF选项之间的关系.但其实这篇文章描述的是有问题的. 在以Unix为核心的一些操作系统中(不一定都是),SO_RCVBUF选项确实决定了TCP窗口的大小.你设置为多少窗口就为多少.但在Windows上确并非如此,通过一些抓包工具分析后,你会发现这两者并不是一一对应关系,MSDN的说明上确实也告知这一事实. 如使原创 2011-01-21 10:14:00 · 5934 阅读 · 1 评论 -
socket选项自带的TCP异常断开检测
TCP异常断开是指在突然断电,直接拔网线等等情况下,如果通信双方没有进行数据发送通信等处理的时候,无法获知连接已经断开的情况. 在通常的情况下,为了使得socket通信不受操作系统的限制,需要自己在应用层实现心跳包机制,来检查异常断开的情况,一般的方式就是服务器在一段时间没有收到客户端数据包时,定时发包,然后客户端回应,如果已经出现异常断开则服务器接收会返回错误,而客户端在指定时间内没有收到数据包,则主动向服务器发包,得到错误就说明断开.诸如此类的方式就是自己实现的心跳包机制. 但操作系统本身也自带原创 2011-01-25 12:51:00 · 7627 阅读 · 0 评论 -
TCP滑动窗口和socket缓冲区之间的关系(记录)
一、TCP的滑动窗口大小实际上就是socket的接收缓冲区大小的字节数二、对于server端的socket一定要在listen之间设置缓冲区大小,因为,accept时新产生的socket会继承监听socket的缓冲区大小。对于client端的socket一定要在connet之前设置缓冲区大小,因为connet时需要进行三次握手过程,会通知对方自己的窗口大小。在connet之后再设置缓冲区,已经没有什么意义。三、由于缓冲区大小在TCP头部只有16位来表示,所以它的最大值是65536,但是对于一些情况来说需要使转载 2010-12-30 16:05:00 · 5365 阅读 · 1 评论 -
RTP封装h264
文章部分借用网上搜索到的资料网络抽象层单元类型 (NALU):NALU头由一个字节组成,它的语法如下: +---------------+ |0|1|2|3|4|5|6|7| +-+-+-+-+-+-+-+-+ |F|NRI| Type | +---------------+F: 1原创 2011-12-08 17:41:17 · 27274 阅读 · 9 评论