2013年7月26日

UNIX网络编程——带外数据

摘要: 许多传输层有带外数据的概念,它有时也称为经加速数据。其想法是一个连接的某端发生了重要的事情,而且该端希望迅速通告其对端。这里“迅速”意味着这种通知应该在已排队等待发送的任何“普通”(有时称为“带内”)数据之前发送。也就是说,带外数据被认为具有比普通数据更高的优先级。带外数据并不需要在... 阅读全文

posted @ 2013-07-26 17:18 疯子123 阅读(198) 评论(0) 推荐(0) 编辑

UNIX网络编程——信号驱动式I/O

摘要: 信号驱动式I/O是指进程预先告知内核,使得当某个描述符上发生某事时,内核使用信号通知相关进程。 针对一个套接字使用信号驱动式I/O,要求进程执行以下3个步骤:建立SIGIO信号的信号处理函数。设置该套接字的属主,通常使用fcntl的F_SETOWN命令设置。开启该套接字的信号驱动... 阅读全文

posted @ 2013-07-26 16:29 疯子123 阅读(308) 评论(0) 推荐(0) 编辑

UNIX网络编程——非阻塞accept

摘要: 当有一个已完成的连接准备好被accept时,select将作为可读描述符返回该连接的监听套接字。因此,如果我们使用select在某个监听套接字上等待一个外来连接,那就没有必要把监听套接字设置为非阻塞,这是因为如果select告诉我们该套接字上已有连接就绪,那么随后的accept调用不... 阅读全文

posted @ 2013-07-26 16:09 疯子123 阅读(313) 评论(0) 推荐(0) 编辑

UNIX网络编程——非阻塞connect: Web客户程序

摘要: 非阻塞的connect的实现例子出自Netscape的Web客户程序。客户先建立一个与某个Web服务器的HTTP连接,再获取一个主页。该主页往往含有多个对于其他网页的引用。客户可以使用非阻塞connect同时获取多个网页,以此取代每次只获取一个网页的串行获取手段。图16-12展示了一个并... 阅读全文

posted @ 2013-07-26 14:15 疯子123 阅读(197) 评论(0) 推荐(0) 编辑

UNIX网络编程——非阻塞connect:时间获取客户程序

摘要: #include "unp.h"intconnect_nonb(int sockfd, const SA *saptr, socklen_t salen, int nsec){ int flags, n, error; socklen_t len; fd_set rset, wset;... 阅读全文

posted @ 2013-07-26 13:14 疯子123 阅读(277) 评论(0) 推荐(0) 编辑

UNIX网络编程——非阻塞connect

摘要: 当在一个非阻塞的TCP套接字上调用connect时,connect将立即返回一个EINPROGRESS错误,不过已经发起的TCP三次握手继续进行。我们接着使用select检测这个连接或成功或失败的已建立条件。非阻塞的connect有三个用途:我们可以把三次握手叠加在其他处理上。完成一个c... 阅读全文

posted @ 2013-07-26 13:05 疯子123 阅读(124) 评论(0) 推荐(0) 编辑

UNIX网络编程——非阻塞式I/O(套接字)

摘要: 套接字的默认状态是阻塞的。这就意味着当发出一个不能立即完成的套接字调用时,其进程将被投入睡眠,等待相应的操作完成。可能阻塞的套接字调用可分为以下4类:(1)输入操作,包括read,readv,recv,recvfrom和recvmsg共5个函数。如果某个进程对一个阻塞的TCP套接字(默认... 阅读全文

posted @ 2013-07-26 12:35 疯子123 阅读(295) 评论(0) 推荐(0) 编辑

UNIX网络编程——使用select 实现套接字I/O超时

摘要: 下面程序包含read_timeout、write_timeout、accept_timeout、connect_timeout 四个函数封装:/* read_timeout - 读超时检测函数,不含读操作 * fd:文件描述符 * wait_seconds:等待超时秒数, 如果为0表示不... 阅读全文

posted @ 2013-07-26 11:52 疯子123 阅读(255) 评论(0) 推荐(0) 编辑

UNIX网络编程——设置套接字超时

摘要: 在涉及套接字的I/O操作上设置超时的方法有以下3种:调用alarm,它在指定超时期时产生SIGALRM信号。这个方法涉及信号处理,而信号处理在不同的实现上存在差异,而且可能干扰进程中现有的alarm调用。在select中阻塞等待I/O(select有内置的时间限制),以此代替直接阻塞在r... 阅读全文

posted @ 2013-07-26 11:28 疯子123 阅读(170) 评论(0) 推荐(0) 编辑

UNIX网络编程——名字与地址转换(gethostbyname,gethostbyaddr,getservbyname,getservbyport,getaddrinfo,getnameinfo函数)

摘要: 名字和数值地址间进行转换的函数:gethostbyname和gethostbyaddr在主机名字与IPv4地址之间进行转换。getservbyname和getservbyport在服务器名字和端口号之间进行转换。还有两个协议无关的转换函数:getaddrinfo和getnameinfo,... 阅读全文

posted @ 2013-07-26 10:53 疯子123 阅读(170) 评论(0) 推荐(0) 编辑

导航