
网络编程
文章平均质量分 69
Justlinux2010
新浪微博 justlinux2010
展开
-
select函数是否阻塞与套接字的阻塞状态无关!!
网路编程时有时需要给建立连接过程添加时间控制,通常的过程是 1)建立套接字,调用fcntl设置非阻塞(O_NONBLOCK)选项 2)调用connect函数发起连接,判断errno是否是EINPROGRESS(也有可能直接建立连接成功),如果不是,说明出错 3)调用select函数监听套接字是否可写来判原创 2012-04-28 11:50:11 · 3011 阅读 · 0 评论 -
对监听套接字进行read、write和connect操作会怎样?
已经学习的时候没有想过这个问题,只知道用监听套接字来执行accept操作,获取与客户端的连接,从来就没想过如果对监听套接字执行普通套接字的操作会怎样,今天特意做了个实验,对这三种情况进行测试。 一、 read操作 代码如下:#include #include #include #include #include #include #include #in原创 2012-07-25 10:58:41 · 3955 阅读 · 0 评论 -
selec/poll中的读写事件和epoll中的读写事件
在Linux网络编程中,常常使用select和poll来做事件触发,监听socket的读写状态,然后进行读写操作。现在新的linux内核中,增加了epoll事件触发机制,具有更高的性能和更好的设计理念,可以用它来完全代替select和poll。相比于select,epoll最大的好处在于它不会随监听fd数目的增长而降低效率。因为在内核总的select实现中,它是采用轮询来处理的,轮询的fd数目越多原创 2012-07-24 17:10:12 · 5884 阅读 · 0 评论 -
Linux下获取本地IP地址--------ioctl
获取本地的局域网IP地址,个人认为最好的还是这个神器---ioctl,这个接口的功能真是非常强大,非常值得研究和学习。即使本地的主机名是localhost,使用ioctl也可以轻松地获取局域网中的IP地址,而且不需要在/etc/hosts中绑定局域网IP。使用ioctl来获取本地局域网IP地址,需要首先创建一个套接字和一个struct ifreq结构(值-结果参数),下面首先介绍struct if原创 2012-07-25 17:59:32 · 3865 阅读 · 2 评论 -
Linux下获取本地IP地址--------getaddrinfo
获取本地IP地址的方式很多,这里使用的接口是getaddrinfo(最开始发表时,这个地方表述有错误,这个接口也不能解决主机名为localhost,获取的IP地址是127.0.0.1,但是可以通过修改/etc/hosts文件来绑定本地IP地址)。这个接口在《Unix网络编程》第一卷的11.2节有讲解,但是当时看书的时候没有深入的研究这个接口(当时可能感觉获取本地ip地址很容易),这个接口及其相关的原创 2012-07-24 15:26:10 · 16017 阅读 · 3 评论 -
Linux编程中的错误码列表
有时可以知道错误的数值,但是如果不知道对应于那个宏定义,也很难知道这个错误描述的是什么。我平时这两种方法来确定:在内核源码中搜索和查看头文件。 在内核源码中搜索一般都可以搜到,而且使用source insight的话也很方便,不多说了。当然更多的时候还是看头文件,因为一般的错误在/usr/include/asm-generic/errno-base.h和/usr/include/asm-gener原创 2012-07-28 12:13:26 · 2006 阅读 · 0 评论 -
Linux下获取本地IP地址--------getifaddrs
今天在看sheepdog的时候发现了getifaddrs()这个接口,它可以查找到系统所有的网络接口的信息,包括以太网卡接口和回环接口等。利用这个接口来获取本机的IP地址真是太方便了,原来的getaddrinfo()、ioctl()或者利用套接字方法等来获取IP地址的方法都没法跟这个接口比,不仅方便,而且也非常的强大,完全不需要绑定主机名等类似的操作。看了一下glibc的源码,它是利用netlin原创 2013-06-08 23:26:25 · 7032 阅读 · 0 评论 -
《浅谈TCP协议栈》ppt分享
这个是在公司内部串讲时候的ppt,分享一下!浅谈TCP协议栈.pptx原创 2013-10-22 23:36:46 · 2018 阅读 · 0 评论 -
如何查找Linux中一些特殊数据类型定义,比如pid_t和uid_t
刚开始学习的时候看到像pid_t、uid_t这样的类型,总是想知道它的定义在哪,究竟是什么类型。但是直接看使用这些类型的函数的头文件根本就找不到。这里把我的一些经验分享给大家,希望有所帮助。 下面以pid_t类型和getpid函数为例,getpid的定义如下: #include #include pid_t getpid(void);原创 2012-07-28 12:42:46 · 16268 阅读 · 7 评论