上一页 1 ··· 23 24 25 26 27 28 29 30 31 ··· 100 下一页

2013年7月24日

UNIX网络编程——套接字选项(SO_REUSEADDR)

摘要: 1、一般来说,一个端口释放后会等待两分钟之后才能再被使用,SO_REUSEADDR是让端口释放后立即就可以被再次使用。 SO_REUSEADDR用于对TCP套接字处于TIME_WAIT状态下的socket,才可以重复绑定使用。server程序总是应该在调用bind()之前设置SO_REUSEAD... 阅读全文

posted @ 2013-07-24 13:55 胡永光 阅读(167) 评论(0) 推荐(0) 编辑

UNIX网络编程——套接字选项(SO_RCVBUF和SO_SNDBUF)

摘要: 有时候我们需要控制套接字的行为(如修改缓冲区的大小),这个时候我们就要学习套接字选项。int getsockopt(int sockfd,int level,int optname,void *optval,socklen_t *optlen)int setsockopt(int soc... 阅读全文

posted @ 2013-07-24 12:03 胡永光 阅读(305) 评论(0) 推荐(0) 编辑

UNIX网络编程——使用select函数编写客户端和服务器

摘要: 首先看原先《UNIX网络编程——并发服务器(TCP)》的代码,服务器代码serv.c:#include#include#include#include#include#include#include#include#include#include#define ERR_EXIT(m) \... 阅读全文

posted @ 2013-07-24 10:00 胡永光 阅读(262) 评论(0) 推荐(0) 编辑

UNIX网络编程——shutdown 与 close 函数 的区别

摘要: 假设server和client 已经建立了连接,server调用了close, 发送FIN 段给client(其实不一定会发送FIN段,后面再说),此时server不能再通过socket发送和接收数据,此时client调用read,如果接收到FIN 段会返回0,但client此时还是可以... 阅读全文

posted @ 2013-07-24 00:56 胡永光 阅读(189) 评论(0) 推荐(0) 编辑

2013年7月23日

UNIX网络编程——ICMP报文分析:端口不可达

摘要: ICMP的一个规则是,ICMP差错报文必须包括生成该差错报文的数据报IP首部(包含任何选项),还必须至少包括跟在该IP首部后面的前8个字节(包含源端口和目的端口)。在我们的例子中,跟在IP首部后面的前8个字节包含UDP的首部。 我们利用前面博客中UNIX网络编程学习(18)中UDP回... 阅读全文

posted @ 2013-07-23 19:53 胡永光 阅读(394) 评论(0) 推荐(0) 编辑

UNIX网络编程——僵尸进程

摘要: 在fork()/exec()过程中,假设子进程结束时父进程仍存在,而父进程fork()之前既没安装SIGCHLD信号处理函数调用waitpid()等待子进程结束,又没有显式忽略该信号,则子进程成为僵尸进程,无法正常结束,此时即使是root身份kill -9也不能杀死僵尸进程。补救办法是杀... 阅读全文

posted @ 2013-07-23 19:51 胡永光 阅读(127) 评论(0) 推荐(0) 编辑

UNIX网络编程——I/O复用:select和poll函数

摘要: 我们看到TCP客户同时处理两个输入:标准输入和TCP套接字。我们遇到的问题是就在客户阻塞于(标准输入上)fgets调用,服务器进程会被杀死。服务器TCP虽然正确的给客户TCP发送了一个FIN,但是既然客户进程正阻塞于从标准输入读入的过程,它将看不到这个EOF,直到从套接字读时为止(可能额... 阅读全文

posted @ 2013-07-23 18:59 胡永光 阅读(126) 评论(0) 推荐(0) 编辑

UNIX网络编程——TCP回射服务器/客户端程序

摘要: 下面通过最简单的客户端/服务器程序的实例来学习socket API。 serv.c 程序的功能是从客户端读取字符然后直接回射回去:#include#include#include#include#include#include#include#... 阅读全文

posted @ 2013-07-23 08:42 胡永光 阅读(175) 评论(0) 推荐(0) 编辑

2013年7月22日

UNIX网络编程——getsockname和getpeername函数

摘要: 这两个函数或者返回与某个套接字关联的本地协议地址(getsockname),或者返回与某个套接字关联的外地协议地址即得到对方的地址(getpeername)。#include int getsockname(int sockfd,struct sockaddr* localaddr,s... 阅读全文

posted @ 2013-07-22 23:56 胡永光 阅读(177) 评论(0) 推荐(0) 编辑

UNIX网络编程——并发服务器(TCP)

摘要: 在迭代服务器中,服务器只能处理一个客户端的请求,如何同时服务多个客户端呢?在未讲到select/poll/epoll等高级IO之前,比较老土的办法是使用fork来实现。 网络服务器通常用fork来同时服务多个客户端,父进程专门负责监听端口,每次accept一个新的客户端连接就fo... 阅读全文

posted @ 2013-07-22 19:35 胡永光 阅读(169) 评论(0) 推荐(0) 编辑

上一页 1 ··· 23 24 25 26 27 28 29 30 31 ··· 100 下一页

导航