网络编程
sunxiaopengsun
这个作者很懒,什么都没留下…
展开
-
网络编程——select模型(总结)
https://segmentfault.com/a/1190000019207061?utm_source=tag-newest转载 2020-02-19 20:23:28 · 178 阅读 · 0 评论 -
TCP和UDP的最完整的区别
TCP UDPTCP与UDP基本区别 1.基于连接与无连接 2.TCP要求系统资源较多,UDP较少; 3.UDP程序结构较简单 4.流模式(TCP)与数据报模式(UDP); 5.TCP保证数据正确性,UDP可能丢包 6.TCP保证数据顺序,UDP不保证 UDP应用场景: 1.面向数据报方式 2.网络数据大多为短消息 3原创 2017-03-18 09:13:00 · 421 阅读 · 0 评论 -
函数inet_addr和inet_ntoa,本机字节顺序与网络字节顺序的转函数的总结
inet_addr : 将"数字+句点"的格式的IP地址转换到unsigned long中,返回值已经是按照网络字节顺序了相反inet_ntoa :把类型为struct in_addr的数据转化为"数字+句点"的形式的字符串typedef u_int32_t in_addr_t;struct in_addr{ in_addr_t s_addr;};本机字节原创 2017-03-22 18:38:40 · 2634 阅读 · 0 评论 -
socket中bind函数绑定的IP是什么
所谓bind,就是指绑定本地接受端口。指定ip,是为了分辨多ip主机。bind是服务端调用的函数,绑定的是服务端的IP,假设服务端有多个网卡,即会有多个IP,这个时候我们可以选择用bind绑定其中一个IP,那么服务端只接收该IP上某端口的数据。如果bind绑定的是INADDR_ANY,即表示所有发送到服务器的这个端口,不管是哪个网卡/哪个IP地址接收到的数据,都由这个服务端进程进行处理。原创 2017-03-16 17:43:47 · 8077 阅读 · 1 评论 -
http的keep-alive和tcp的keepalive区别
1、HTTP Keep-Alive在http早期,每个http请求都要求打开一个tpc socket连接,并且使用一次之后就断开这个tcp连接。使用keep-alive可以改善这种状态,即在一次TCP连接中可以持续发送多份数据而不会断开连接。通过使用keep-alive机制,可以减少tcp连接建立次数,也意味着可以减少TIME_WAIT状态连接,以此提高性能和提高httpd服务器的吞吐率(原创 2017-06-12 17:35:17 · 378 阅读 · 0 评论 -
nginx指令之——tcp_nodelay
指令tcp_nodelay作用于socket参数TCP_NODELAY。在这之前,我们先说说nagle缓存算法,有些应用程序在网络通讯的时候会发送很少的字节,比如说一个字节,那么再加TCP协议本身,实际上发的要41个字节,这样的效率是很低的。这时候nagle算法就应运而生了,它将要发送的数据存放在缓存里,当积累到一定量或一定时间,再将它们发送出去。这里TCP_NODELAY就是nagle启原创 2017-06-12 17:55:22 · 2376 阅读 · 0 评论 -
计算机常见数据存储单位换算(kb KB)
一:基本知识计算机常见数据存储单位换算1GB=1024MB1MB=1024KB1KB=1024Byte(字节)1Byte(字节)=8bit(位)P.S.这里再罗嗦一个常见问题我们购买的硬盘和各种存储设备往往标榜如64GB,当我们拿到手只有62.5GB左右,因为厂家是按1GB=1000MB的单位标榜的所以64GB*1000MB/1024MB=62.5GB1位就是表原创 2017-07-17 21:50:18 · 10604 阅读 · 0 评论 -
sdp文件详细总结
一概述:SDP目的就是在媒体会话中,传递媒体流信息,允许会话描述的接收者去参与会话。SDP基本上在internet上工作。他定义了会话描述的统一格式,但并不定义多播地址的分配和SDP消息的传输,也不支持媒体编码方案的协商,这些功能均由下层传送协议完成。典型的会话传送协议包括:SAP(Session Announcement Protocol会话公告协议),SIP(Session Ini原创 2017-12-13 16:32:56 · 467 阅读 · 1 评论 -
libcurl增加HTTP header 和 POST之后获取返回数据
libcurl增加HTTP header 和 POST之后获取返回数据 flyfishstatic size_t write_data(void *ptr, size_t size, size_t nmemb, void *stream){ size_t written = fwrite(ptr, size, nmemb, (FILE *)stream); return原创 2017-12-14 14:46:09 · 3970 阅读 · 0 评论 -
linux下多路复用模型之Select模型
Linux关于并发网络分为Apache模型(Process per Connection (进程连接) ) 和TPC , 还有select模型,以及poll模型(一般是Epoll模型) Select模型极其作用:这文章讲述的很好,没必要重述已有的东西,就直接给链接 http://blog.csdn.net/turkeyzhou/article/details/860936原创 2018-01-25 15:49:32 · 245 阅读 · 0 评论 -
linux网络编程 send或者write socket遭遇SIGPIPE,分析及解决
最近在编写C/S(客户端/服务器)程序,问题:当服务端断开连接时,客户端也随之关闭。使用gdb调试信息如下:Program received signal SIGPIPE, Broken pipe.0x0012e416 in __kernel_vsyscall ()分析原因:当服务端close一个连接时,如果客户端继续使用send或write发送数据,根据TCP协议的规定,原创 2018-01-26 11:55:23 · 756 阅读 · 0 评论 -
理解TCP长连接(Keepalive)
TCP Keepalive的起源TCP协议中有长连接和短连接之分。短连接环境下,数据交互完毕后,主动释放连接;长连接的环境下,进行一次数据交互后,很长一段时间内无数据交互时,客户端可能意外断电、死机、崩溃、重启,还是中间路由网络无故断开,这些TCP连接并未来得及正常释放,那么,连接的另一方并不知道对端的情况,它会一直维护这个连接,长时间的积累会导致非常多的半打开连接,造成端系统资源的消耗和浪...转载 2019-05-27 13:46:47 · 494 阅读 · 0 评论 -
tcp窗口滑动以及拥塞控制
TCP协议作为一个可靠的面向流的传输协议,其可靠性和流量控制由滑动窗口协议保证,而拥塞控制则由控制窗口结合一系列的控制算法实现。一、滑动窗口协议 关于这部分自己不晓得怎么叙述才好,因为理解的部分更多,下面就用自己的理解来介绍下TCP的精髓:滑动窗口协议。 所谓滑动窗口协议,自己理解有两点:1. “窗口”对应的是一段可以被发送者发送的字节序列,其连续的范围称之为“窗口”;原创 2017-02-24 16:15:14 · 450 阅读 · 0 评论 -
tcp参数详解之tcp_fin_timeout
tcp_fin_timeout :INTEGER默认值是 60对于本端断开的socket连接,TCP保持在FIN_WAIT_2状态的时间。对方可能会断开连接或一直不结束连接或不可预料的进程死亡。默认值为 60 秒。过去在2.2版本的内核中是 180 秒。您可以设置该值﹐但需要注意﹐如果您的机器为负载很重的web服务器﹐您可能要冒内存被大量无效数据报填满的风险﹐FIN-WAIT-2 sock原创 2017-02-24 16:05:20 · 1332 阅读 · 1 评论 -
linux下TCP keepalive 属性设置
Linux操作系统下TCP keepalive属性查看不容错过的IBM集群技术资源汇总 <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> <iframe name="google_ads_frame" src="http://pagead2原创 2017-02-24 15:37:24 · 12203 阅读 · 0 评论 -
TCP协议和UDP协议的区别 (有无链接,传输速度,有序无序,可靠性,对资源的占用)
TCP协议和UDP协议的区别:: 1,TCP协议面向连接,UDP协议面向非连接 (有无链接) 2,TCP协议传输速度慢,UDP协议传输速度快 (传输速度) 3,TCP协议保证数据顺序,UDP协议不保证 (数据的有序性,在IP层时,数据包会变得无序) 4,TCP协议保证原创 2017-02-16 21:19:47 · 3311 阅读 · 0 评论 -
Windows网络编程Select模型的封装和queue作为数据缓存的使用
首先是对Select网络模型的封装,由于会用到数据缓存,所以接收到的数据需要对应一个socket套接字,这样回复数据的时候才知道对象。[cpp] view plain copy print?#pragma once //存储从某个套接字接受到的数据,通过套接字可以发送处理后的数据 struct NetDataBuffer {原创 2017-03-01 17:21:24 · 412 阅读 · 0 评论 -
Select模型原理
Select模型原理利用select函数,判断套接字上是否存在数据,或者能否向一个套接字写入数据。目的是防止应用程序在套接字处于锁定模式时,调用recv(或send)从没有数据的套接字上接收数据,被迫进入阻塞状态。 select参数和返回值意义如下:int select ( IN int nfds, //0原创 2017-03-01 17:27:01 · 1288 阅读 · 0 评论 -
使用select系统调用实现简单的TCP服务器
速度原创 2017-03-01 17:34:37 · 411 阅读 · 0 评论 -
如何解决端口的time_wait
使用一个压力生成的客户端进行压力测试时,如果需要频繁关闭连接,这时候就会导致机器出现大量的TIME_WAIT端口,这会导致端口不够用,从而影响发起新的连接。这一问题可以通过设置/etc/sysctl.conf来解决。编辑文件,加入以下内容:[plain] view plain copy net.ipv4.tcp_syncook原创 2017-03-01 17:46:42 · 5139 阅读 · 0 评论 -
网络IO之阻塞、非阻塞、同步、异步总结
1、前言 在网络编程中,阻塞、非阻塞、同步、异步经常被提到。unix网络编程第一卷第六章专门讨论五种不同的IO模型,Stevens讲的非常详细,我记得去年看第一遍时候,似懂非懂,没有深入理解。网上有详细的分析:http://blog.csdn.net/historyasamirror/article/details/5778378。我结合网上博客和书总结一下,加以区别,加深理解。原创 2017-03-02 09:49:21 · 443 阅读 · 0 评论 -
异步IO
在IO编程一节中,我们已经知道,CPU的速度远远快于磁盘、网络等IO。在一个线程中,CPU执行代码的速度极快,然而,一旦遇到IO操作,如读写文件、发送网络数据时,就需要等待IO操作完成,才能继续进行下一步操作。这种情况称为同步IO。在IO操作的过程中,当前线程被挂起,而其他需要CPU执行的代码就无法被当前线程执行了。因为一个IO操作就阻塞了当前线程,导致其他代码无法执行,所以我们必原创 2017-03-02 09:53:41 · 1468 阅读 · 0 评论 -
WSAAsyncSelect模型
WSAAsyncSelect模型允许应用程序以Windows消息的方式接收网络事件通知。许多对性能要求不高的网络应用程序都采用WSAAsyncSelect模型,MFC的CSocket类也使用了它。 WSAAsyncSelect自动把套接字设为非阻塞模式,并且为套接字绑定一个窗口句柄,当有网络事件发生时,便向这个窗口发送消息。 intWSAAsyncSel原创 2017-01-26 10:22:02 · 354 阅读 · 0 评论 -
调试WebService接口的小工具-storm
调试WebService接口的小工具-storm记得在url后面加上 ?wsdl,就可以调试wsdl包含的接口函数了。Storm快速上手: 添加一个WebService(如下图一所示):点击添加,输入wsdl的endpoint url,比如- http://www.deeptraining.com/webservices/weather.asmx- http原创 2017-03-03 12:06:42 · 20460 阅读 · 1 评论 -
服务器TIME_WAIT和CLOSE_WAIT详解和解决办法
昨天解决了一个HttpClient调用错误导致的服务器异常,具体过程如下:http://blog.csdn.net/shootyou/article/details/6615051里头的分析过程有提到,通过查看服务器网络状态检测到服务器有大量的CLOSE_WAIT的状态。 在服务器的日常维护过程中,会经常用到下面的命令:netstat -n | aw原创 2017-02-24 14:51:29 · 375 阅读 · 0 评论 -
TCP KEEPALIVE详解
在一个正常的TCP连接上,当我们用无限等待的方式调用下面的recv或send的时候: ret=recv(s,&buf[idx],nLeft,flags);或 ret=send(s,&buf[idx],nLeft,flags); 如果TCP连接被对方正常关闭,也就是说,对方是正确地调用了closesocket(s)或者shutdown(s)的话,那么上面的re原创 2017-02-24 15:03:49 · 539 阅读 · 0 评论