在阅读完《unix 网络编程:卷一》之后,感觉作者真是unix下编程的大师级的人物。而对于我个人而言,每次阅读完一本技术书籍之后,一定还是得自己重新再写一遍程序(换点内容),复习书本中的内容(大致结构,或者说思想,相同),否则,你很难做到真的理解并掌握的地步。Okay,今天我带来的是服务器模型中的第一种,也是最基本最常用的一种模型–TCP并发服务器,每个客户一个子进程。先简单介绍一下:TCP并发服务...
分类:
系统相关 时间:
2015-06-10 22:39:52
阅读次数:
251
IPv4套接字结构:
struct in_addr
{
in_addr_t s_addr;
};
struct sockaddr_in
{
uint8_t sin_len;
sa_family sin_family;
in_port_t sin_port;//2bytes
struct in_addr sin_addr;//4bytes...
分类:
其他好文 时间:
2015-06-08 09:51:15
阅读次数:
121
三次握手:
1.服务器被动接受客户的连接请求,调用socket,bind,listen来完成,并且阻塞在accpet。
2.客户调用connect发起主动打开,客户发送一个SYN
3.服务器收到SYN,回复一个ACK和SYN。
4.客户回复一个ACK确认。四次挥手:
1.客户调用close主动关闭,发送一个FIN。
2.服务器回复一个ACK
3.服务器调用close回复一个FIN
4...
分类:
其他好文 时间:
2015-06-08 09:50:58
阅读次数:
145
一、I/O复用应用场合
1. 当客户处理多个描述符(既有标准输入,又有网络套接字)时,必须使用IO复用。
2. 一个客户同时处理多个套接字是可能的。
3. 如果一个服务器既要处理监听套接字,又要处理已连接套接字,一般就要使用I/O复用。
4. 如果一个服务器既要处理TCP,又要处理UDP,一般就要I/O复用。
5. 如果一个服务器要处理多个服务或协议,就要用到I/O复用。
其实IO复用...
分类:
其他好文 时间:
2015-06-01 14:46:18
阅读次数:
127
一、 一个简单TCP回射服务端程序
#include "unp.h"
#define MAXLINE 1024
#define PORT 13
#define CONMAX 5
void err_sys(const char* s)
{
fprintf(stderr, "%s\n",s);
exit(1);
}
void str_echo(int connfd)
{
in...
分类:
其他好文 时间:
2015-05-29 15:49:18
阅读次数:
127
1. socket函数
int socket(int family, int type,int protocol)
成返回一个套接字描述符。错误返回-1
其中family指定协议族,一般IPv4为AF_INET, IPv6为AF_INET6。
其中type指定套接字类型,字节流:SOCK_STREAM. 数据报:SOCK_DGRAM。
一般情况下通过family和type的组合都可以...
分类:
其他好文 时间:
2015-05-27 17:20:13
阅读次数:
158
1. 下载源码,W. Richard Stevens的主页:http://www.kohala.com/start/wget http://www.kohala.com/start/unpv22e/unpv22e.tar.gz -P /usr/local/src2. 解压tar xvf /usr/l...
分类:
其他好文 时间:
2015-05-26 23:13:35
阅读次数:
381
TCP
1. TCP面向连接的协议,是一个字节流协议,没有任何记录边界。发送的是数据分组。
2. TCP提供了可靠性:确认重传和重组
(1) TCP每发送一份数据都会要求对端进行确认。如果超时,就会重传。TCP会估计往返时间RTT,以确定等待多长时间重传。
(2) 如果多次发送数据分组,TCP可以保证分组的按序达到。即会根据序列号进行重组。
3. TCP提供流量控制
TCP在...
分类:
其他好文 时间:
2015-05-22 11:36:49
阅读次数:
213
一、一个简单的时间获取客户端
#include
#define MAXCON 50
#define MAXLINE 1024
#define PORT 13
void err_sys(const char* s)
{
fprintf(stderr, "%s\n",s);
exit(1);
}
int main(int argc, char** argv)
{
int s...
分类:
其他好文 时间:
2015-05-20 18:29:44
阅读次数:
181
最近在研究java IO、NIO、NIO2(或者称AIO)相关的东西,有些概念还是要明确下。 按照《Unix网络编程》的划分,IO模型可以分为:阻塞IO、非阻塞IO、IO复用、信号驱动IO和异步IO,按照POSIX标准来划分只分为两类:同步IO和异步IO。如何区分呢?首先一个IO操作其实分成了两个....
分类:
其他好文 时间:
2015-05-17 23:26:19
阅读次数:
162