linux网络编程
文章平均质量分 79
bingqingsuimeng
这个作者很懒,什么都没留下…
展开
-
ethtool 命令详解
ethtool 命令详解 命令描述:ethtool 是用于查询及设置网卡参数的命令。使用概要:ethtool ethx //查询ethx网口基本设置,其中 x 是对应网卡的编号,如eth0、eth1等等ethtool –h //显示ethtool的命令帮助(help)ethtool –i ethX //查询ethX网口转载 2012-08-14 09:51:36 · 1857 阅读 · 0 评论 -
【经验总结】tcp_tw_recycle参数引发的故障
tcp_tw_recycle参数引发的故障By Eric 故障描述: 2010年9月7日,新上线的手机游戏论坛有部分地区用户反应登陆游戏时出现不能登陆或登陆超时等情况,观察用户同时在线数量开始下降情况。排错过程: 一、初步检查是否有变更导致的故障: 1、联系同事检查网络是否有问题或有对该机房网络是否有进行过调整,反回结果是没有变更操作。转载 2016-07-29 13:37:20 · 1485 阅读 · 0 评论 -
tcp 三次握手和四次断连深入分析:连接状态和socket API的关系
说到tcp协议,凡是稍微看过的人都能顺口说出三次握手和四次断连,再牛逼的一点的就能够把每个状态(SYNC_SENT、CLOSE_WAIT。。。。。。等)都能背出来,而说道socket编程,基本上写过网络编程的人都会熟悉那几个标准的API:socket、connect、listen、accept。。。。。。等但是,我敢打赌很少有人明白tcp状态和socket编程API之间的关系。不信转载 2016-07-29 14:19:06 · 612 阅读 · 0 评论 -
大量TIME_WAIT的终极详解和解决方案
上篇笔记主要介绍了与TIME_WAIT相关的基础知识,本文则从实践出发,说明如何解决文章标题提出的问题。1. 查看系统网络配置和当前TCP状态 在定位并处理应用程序出现的网络问题时,了解系统默认网络配置是非常必要的。以x86_64平台Linux kernelversion 2.6.9的机器为例,ipv4网络协议的默认配置可以在/proc/sys/net/ipv4/下查看,其中转载 2016-07-29 14:42:51 · 21643 阅读 · 1 评论 -
pthread_cancel与取消点 pthread_join设置取消点 pthread_cleanup_push回收资源
pthread_cancel(pthread_t pd);用于取消一个函数,它通常需要被取消线程的配合默认情况(延迟取消),它就是给pd设置取消标志, pd线程在很多时候会查看自己是否有取消请求如果有就主动退出, 这些查看是否有取消的地方称为取消点如果是异步取消(pthread_setcanceltype设置),那么 pthread_cancel同时还给发送信号通知转载 2016-07-29 15:26:53 · 2941 阅读 · 0 评论 -
服务器负载均衡的基本功能和实现原理
本文转载自 51cto 博客, 作者 virtualadc原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://virtualadc.blog.51cto.com/3027116/615836前言负载均衡设备作为纵跨网络2-7层协议的设备,往往放置在网络设备和应用设备的连接处,对工程师在网络和应用基本知识方面的转载 2016-12-16 15:50:51 · 606 阅读 · 0 评论 -
epoll 水平触发和边缘触发的区别
EPOLLLT——水平触发EPOLLET——边缘触发epoll有EPOLLLT和EPOLLET两种触发模式,LT是默认的模式,ET是“高速”模式。LT模式下,只要这个fd还有数据可读,每次 epoll_wait都会返回它的事件,提醒用户程序去操作,而在ET(边缘触发)模式中,它只会提示一次,直到下次再有数据流入之前都不会再提示了,无 论fd中是否还有数据可读。所以在ET模式下,read转载 2016-12-14 15:43:38 · 359 阅读 · 0 评论 -
微信为什么不丢消息?
58沈剑 架构师之路上一章和大家分享了《http如何像tcp一样实时的收消息?》, 本章来聊一聊即时通讯(Instant Messaging,后简称im)消息的可靠投递。一、报文类型im的客户端与服务器通过发送报文(也就是网络包)来完成消息的传递,报文分为三种请求报文(request,后简称为为R)应答报文(acknowledge,后简称为A)通知报文(no转载 2016-12-23 14:52:06 · 1359 阅读 · 0 评论 -
http如何像tcp一样实时的收消息?
58沈剑 架构师之路http如何像tcp一样实时的收消息?一、webim如何实现消息推送webim通常有三种方式实现推送通道:1)WebSocket2)FlashSocket3)http轮询其中1)和2)是用Tcp长连接实现的,其消息的实时性可以通过tcp保证。方案3)才算是webim实现消息推送的“正统”方案,用http短连接轮询的方式实现“伪长连转载 2016-12-23 14:53:03 · 359 阅读 · 0 评论 -
QQ状态同步究竟是推还是拉?
58沈剑 架构师之路前面两篇讲即时通讯核心技术的文章《微信为什么不丢消息?》《http如何像tcp一样实时的收消息?》反馈还可以,故继续即时通讯这一个系列吧,今天聊聊即时通讯中的“状态”。需求缘起“在线状态一致性”(好友在线状态,群友在线状态)是即时通讯领域较难解决的一个技术问题,如何精准实时的获得好友、群友的在线状态,是今天将要探讨的话题。好友状态转载 2016-12-23 14:53:52 · 625 阅读 · 0 评论 -
微信为啥这么省流量(技术宅入)
58到家-沈剑 架构师之路前言:“客户端上传时间戳”的玩法,你玩过么?一起聊聊时间戳的奇技淫巧!缘起:无线时代,流量敏感。APP在登录后,往往要向服务器同步非常多的数据,很费流量,技术上有没有节省流量的方法呢?这是本文要讨论的问题。问题一:APP登录时需要拉取什么数据?答:APP登陆时,一般要拉取两类数据,一类是“id列表型数据”,一类是“信息详情型数据”,以微信为例,需要转载 2016-12-23 14:54:20 · 883 阅读 · 0 评论 -
群消息这么复杂,怎么能做到不丢不重?
58沈剑 架构师之路【需求缘起】之前的文章更多的聊了单对单的消息投递:《微信为什么不丢消息?》《http如何像tcp一样实时的收消息?》群聊是多人社交的基本诉求,不管是QQ群,还是微信群,一个群友在群内发了一条消息:(1)在线的群友能第一时间收到消息(2)离线的群友能在登陆后收到消息由于“消息风暴扩散系数”的存在(概念详见《QQ状态同步究竟是推还是拉转载 2016-12-23 14:54:55 · 544 阅读 · 0 评论 -
一次完整的HTTP请求过程
一次完整的HTTP请求过程从TCP三次握手建立连接成功后开始,客户端按照指定的格式开始向服务端发送HTTP请求,服务端接收请求后,解析HTTP请求,处理完业务逻辑,最后返回一个HTTP的响应给客户端,HTTP的响应内容同样有标准的格式。无论是什么客户端或者是什么服务端,大家只要按照HTTP的协议标准来实现的话,那么它一定是通用的。HTTP请求格式HTTP请求格式主要有四部分组成,分别是:请转载 2016-12-20 13:39:40 · 481 阅读 · 0 评论 -
再谈应用环境下的TIME_WAIT和CLOSE_WAIT
昨天解决了一个HttpClient调用错误导致的服务器异常,具体过程如下:http://blog.csdn.net/shootyou/article/details/6615051里头的分析过程有提到,通过查看服务器网络状态检测到服务器有大量的CLOSE_WAIT的状态。在服务器的日常维护过程中,会经常用到下面的命令:[plain] vi转载 2016-07-29 13:35:58 · 339 阅读 · 0 评论 -
服务器端主动关闭连接, 产生的TIME_WAIT状态为什么会占用服务端大量端口?
1. 理解认为accep() 返回的socket_new, 其源端口和目的端口与 listen() 的socket 是一置的,accept() 返回并未占用服务器新的端口。2. 如果服务器端主动关闭 socket_new, 产生的TIME_WAIT状态为什么会在服务器端占用除监听端口以外的其余端口,还是其实并没有占用?3. 如果没有占用的话,为什么高并发的短连接生成的TIME_WAIT会导转载 2016-04-21 17:12:51 · 7425 阅读 · 0 评论 -
在设备上开启telnet服务
来源:http://hi.baidu.com/shanyefeng/blog/item/1bba6cbf8fb0e70d18d81f78.html1.进入busybox源代码目录,选择telnet,telnetd.然后make;make install并制作ramdisk2.确保在ramdisk的sbin目录下存在inetd和telnetd3.在ramdisk中转载 2012-08-28 18:05:34 · 7454 阅读 · 0 评论 -
[外一篇]关于Unix Domain Socket
咋一看名字,虽然有个socket,但是它的用场和常说的“网络”socket有所不同。它实际上是一种本地IPC,以socket为名是因为它和普通socket使用的接口是一致的。虽说普通的socket也可以用作本地IPC,但是从效率上和功能上,要逊于Unix Domain Socket。首先,Unix Domain Socket虽然有socket的名,但是它的数据不需要经过网络协议栈处理,而是转载 2012-12-05 15:11:03 · 957 阅读 · 0 评论 -
本地socket unix domain socket
socket API原本是为网络通讯设计的,但后来在socket的框架上发展出一种IPC机制,就是UNIXDomain Socket。虽然网络socket也可用于同一台主机的进程间通讯(通过loopback地址127.0.0.1),但是UNIX Domain Socket用于IPC更有效率:不需要经过网络协议栈,不需要打包拆包、计算校验和、维护序号和应答等,只是将应用层数据从一个进程拷贝到另一个进转载 2013-01-05 18:18:29 · 33039 阅读 · 5 评论 -
Unix环境高级编程学习笔记(十二) 高级进程间通信
基于流的管道(STREAMS-Based Pipes)所谓基于流的管道实际上就是一种全双工管道,它必须在基于流的系统上才能实现,linux 默认对它是不支持的,而同样的逻辑,我们通常可以用基于 UNIX domain 的 socket 来实现,所以这里对它只作简单介绍。关于流机制,我在 Unix环境高级编程学习笔记(九) 高级IO中曾经介绍过,知道可以在流首处加入处理模块,对于基于转载 2013-01-18 14:09:06 · 902 阅读 · 0 评论 -
linux下定时器的实现(select+线程)
更好的计时器类实现:LINUX RTC机制实现计时器类 很多时候需要在LINUX下用到定时器,但像setitimer()和alarm()这样的定时器有时会和sleep()函数发生冲突,这样就给编程带来了很大的困难。 写了一个定时器的类,使用select进行精确定时。而且可以在系统中创建不限数量的定时器,且互不干扰。类的内部采用线程实现。即线程+select。代码如下:转载 2013-02-07 11:05:16 · 958 阅读 · 0 评论 -
UNIX Domain Socket IPC
4. UNIX Domain Socket IPC 请点评linux操作系统提供了一种UNIX域协议的进程间通信方式,它不能应用在网络中,能使用在本机两进程间的通信中。它能方便的向两个非亲属关系的进程间传递文件描述符,效果类似于在父子进程间传递一样。UNIX域套接字在和本地进程进行交互时候效率更高,因为它不需要处理网络异常可能。socket API原本是为网络通讯设计的,但后来在s转载 2013-02-06 21:55:49 · 2327 阅读 · 0 评论 -
Linux单网卡绑定多IP
Linux单网卡绑定多IP收藏人:gnulinux2010-12-29 | 阅: 转: | 分享 | 来源转载 2013-09-24 09:29:50 · 3173 阅读 · 0 评论 -
linux下获取设置ip地址等函数
在linux下 获取,修改本机IP地址的两个函数//获取本机IP地址函数 view plaincopy to clipboardprint?QString GetLocalIp() { int sock_get_ip; char ipaddr[50]; struct转载 2014-03-26 19:37:57 · 6524 阅读 · 0 评论 -
用readn与written实现解决粘包问题
使用TCP流式套接字,TCP粘包是指发送方发送的若干包数据到接收方接收时粘成一包,从接收缓冲区看,后一包数据的头紧接着前一包数据的尾。 出现粘包现象的原因是多方面的,它既可能由发送方造成,也可能由接收方造成。发送方引起的粘包是由TCP协议本身造成的,TCP为提高传输效率,发送方往往要收集到足够多的数据后才发送一包数据。若连续几次发送的数据都很少,通常TCP会根据优化算转载 2016-01-05 10:04:46 · 889 阅读 · 0 评论 -
socket中的函数遇见EINTR的处理
这几天,写服务器代码过程当中,遇见EINRT信号的问题,我是借鉴 《unp 》,采用continue或者goto again循环解决的。但是感觉这个还是很有必要记录一下。网络上查找到的信息很多。下面是我查找到的和EINTR有关的介绍:1 http://blog.csdn.net/yanook/article/details/7226019 慢系统调用函数如何处理中断信号EINTR2转载 2016-01-05 10:06:20 · 2748 阅读 · 0 评论 -
C语言实现UDP打洞
首先,如果你不是很清楚UDP打洞原理,建议先看下这篇博文,写的很好。 http://blog.csdn.net/wenhuiqiao/article/details/5929186 废话不多说,上代码,过程请看代码注释,其中Client1和Client2实现代码相同,只是方向上有变化。 UDPServer:[cpp] view plain copy转载 2016-04-13 11:46:39 · 2001 阅读 · 1 评论 -
libcurl出现CURLcode 23 CURLE_WRITE_ERROR错误 以及每次抓取网页长度不一致问题
使用libCURL时调用curl_easy_perform返回的CURLcode为23错误。查看得知是CURLE_WRITE_ERROR,写文件错误。估计是使用curl_easy_setopt时设置CURLOPT_WRITEFUNCTION或者CURLWRITEDATA时有问题,结果找了半天也没有发现。最后发现是够早的WRITEFUNC有问题:错误:size_t functio转载 2016-05-11 13:31:50 · 9210 阅读 · 0 评论 -
http 错误代码表
所有 HTTP 状态代码及其定义。 代码 指示 2xx 成功 200 正常;请求已完成。 201 正常;紧接 POST 命令。 202 正常;已接受用于处理,但处理尚未完成。 203 正常;部分信息 — 返回的信息只是一部分。 204 正常;无响应 — 已接收请求,但不存在要回送的信息。 3xx 重定向 301 已移动 — 请转载 2017-02-20 10:42:08 · 427 阅读 · 0 评论