POLLERR的故事

今天code review时,同事B对我代码中的poll()的处理做法提出了异议。于是做了些研究,还发现了一些好玩的故事。 异议的代码 我的代码是参考manpage写的,类似下面的做法。同事B说没有处理POLLERR、而且应当使用else if。 OK。我赞同补充POLLER...

2015-09-08 10:06:11

阅读数 2155

评论数 0

EISCONN的故事

在这春风明媚的日子里,有位T同学很苦恼。忙碌了一整天,有个BUG愣是定位不出来。简单描述呢,现象是这样子的: 第一次处理是正常的,但是后续的处理就是报错。sendto()调用错误码是 EISCONN(已被连接)。 忧伤的问题 当然,代码BUG的范围也很快确定了,就是新加入的s...

2015-09-08 10:01:22

阅读数 1603

评论数 0

两个结构体ifconf和ifreq

用ioctl获得本地ip地址时要用到两个结构体ifconf和ifreq,它们对于大多数人 来说都是比较陌生的,这里给大家一种比较简单的理解方法,当然只一种帮助 理解的方法,在描述中可能会有一些地方与真实定义有所出入,仅供参考. 首先先认识一下ifconf和ifreq: //if...

2015-03-26 15:58:53

阅读数 914

评论数 0

linux 下获得本机(通用网卡)ip地址

#include #include #include #include #include #include #include #include int main(void) {        int s;        struct ifconf co...

2015-03-26 15:57:56

阅读数 401

评论数 0

signal(SIGPIPE, SIG_IGN);

TCP是全双工的信道, 可以看作两条单工信道, TCP连接两端的两个端点各负责一条. 当对端调用close时, 虽然本意是关闭整个两条信道,  但本端只是收到FIN包.  按照TCP协议的语义, 表示对端只是关闭了其所负责的那一条单工信道, 仍然可以继续接收数据. 也就是说, 因为TCP协议的限...

2015-02-12 11:54:48

阅读数 7122

评论数 1

socket中的函数遇见EINTR的处理

这几天,写服务器代码过程当中,遇见EINRT信号的问题,我是借鉴 《unp 》,采用continue或者goto again循环解决的。但是感觉这个还是很有必要记录一下。网络上查找到的信息很多。下面是我查找到的和EINTR有关的介绍: 1  http://blog.csdn.net/yanook...

2015-01-22 16:13:21

阅读数 463

评论数 0

Linux系统下UDP发送和接收广播消息小例子

// 发送端   #include    #include    #include    #include    #include    #include    #include    #include    #include          using namespac...

2015-01-08 11:59:29

阅读数 802

评论数 0

wireshark过滤规则

1.过 滤IP,如来源IP或者目标IP等于某个IP 例子: ip.src eq 192.168.1.107 or ip.dst eq 192.168.1.107 或者 ip.addr eq 192.168.1.107 // 都能显示来源IP和目标IP 2.过滤端 口 例子:...

2014-11-25 10:52:13

阅读数 405

评论数 0

windows下手动配置ipv6地址

在XP,2003等早期版本中,ipv6地址在“网络连接”的属性配置里是无法手工配置的,只能使用netsh配置。配置方法如下: 首先,安装IPV6协议,ipv6 install 第二步,查看当前使用的本地连接信息: 如上图,我的为“本地连接 3”,依次执行以下命令: ...

2014-07-13 17:57:04

阅读数 1341

评论数 0

win32 ipv6 sendto recvfrom

在windows xp下进行ipv6的udp网络通新

2014-07-13 17:55:07

阅读数 1981

评论数 0

win32 ipv6 bind 10014问题

这两天实验了一下,windows xp系统下的 ipv6 udp

2014-07-13 17:39:52

阅读数 1672

评论数 0

C++中的IPv6网络程序设计

IPv4 最初是由美国国防部开发的用于网际互联(IP)协议,后来它不仅发展了TCP,而且还进一步发展了IPv4(IP 协议4.0版)。IPv4现在已经广泛应用于Internet网络中,同时也应用于大多数计算机系统,局域网和广域网中。然而,随着Internet 中的计算机数量突飞猛涨,IPv4 的局...

2014-07-13 12:43:30

阅读数 1501

评论数 0

eventfd man

概要      #include      int eventfd(unsigned int initval, intflags); 描述 eventfd()创建一个“eventfd对象”,这个对象能被用户空间应用用作一个事件等待/响应机制,靠内核去响应用户空间应用事件。这个对象包...

2014-05-05 09:51:18

阅读数 798

评论数 0

linux新的API signalfd、timerfd、eventfd使用说明

三种新的fd加入linux内核的的版本: signalfd:2.6.22 timerfd:2.6.25 eventfd:2.6.22 三种fd的意义: signalfd:传统的处理信号的方式是注册信号处理函数;由于信号是异步发生的,要解决数据的并发访问,可重入问题。signalfd可以将...

2014-05-04 18:28:28

阅读数 607

评论数 0

linux新的API signalfd、timerfd、eventfd使用说明——eventfd

好久没更新了,今天看一下第三种新的fd:eventfd类似于管道的概念,可以实现线程间的事件通知,所不同的是eventfd的缓冲区大小是sizeof(uint64_t)也就是8字节,它是一个64位的计数器,写入递增计数器,读取将得到计数器的值,并且清零。看一下代码: [cpp] vi...

2014-05-04 18:25:21

阅读数 788

评论数 0

SOCKET bind INADDR_LOOPBACK和INADDR_ANY的区别

今天写程序时候,服务器端启动了,然后客户端总是连接不上,connect返回错误号是10061,服务器积极拒绝请求。   用telnet连接一下端口,发现服务端服务没有开启,但是我程序是启动的,用netstat -a 命令看服务器是监听状态。   把流程走一遍,发现bind用的参数是INAD...

2014-04-18 14:16:39

阅读数 1675

评论数 0

reactor设计模式 1

Reactor这个词译成汉语还真没有什么合适的,很多地方叫反应器模式,但更多好像就直接叫reactor模式了,其实我觉着叫应答者模式更好理解一些。通过了解,这个模式更像一个侍卫,一直在等待你的召唤,或者叫召唤兽。   并发系统常使用reactor模式,代替常用的多线程的处理方式,节省系统的资源...

2014-03-24 16:58:13

阅读数 1317

评论数 0

滑动窗口机制

(1).窗口机制     滑动窗口协议的基本原理就是在任意时刻,发送方都维持了一个连续的允许发送的帧的序号,称为发送窗口;同时,接收方也维持了一个连续的允许接收的帧的序号,称为接收窗口。发送窗口和接收窗口的序号的上下界不一定要一样,甚至大小也可以不同。不同的滑动窗口协议窗口大小一般不同。发送方窗...

2014-03-18 14:10:13

阅读数 508

评论数 0

惊群现象

引用:http://www.cppblog.com/isware/archive/2011/07/20/151470.aspx ------------------------------------------------------------------------------------...

2014-03-12 11:10:50

阅读数 548

评论数 0

FTP服务器和客户端源代码编写问题(ftp server client source)

最近关注FTP程序源代码的朋友非常多,这里简单说明一下。 其实FTP也就是普通的Socket程序,只是需要按照FTP协议(RFC959, 1635?可能我记错了)去做,也就是每个消息有固定的结构的,比如头3个字节必须是200,201,300,400之类的数字表示操作结果。 写FTP协议...

2014-02-11 16:22:37

阅读数 979

评论数 0

提示
确定要删除当前文章?
取消 删除