UDP高级技术(并发服务器)
来源:互联网 发布:破解rar密码软件 编辑:程序博客网 时间:2024/06/07 01:09
通常所见的的TCP服务器都是并发实现的,即服务同时处理多个请求,而不是等待前一个完成再处理下一个请求,这个实现得益于TCP的listen()与connect()的分工处理机制。具体为,服务器监听来自客户的连接,当一个请求到来时,服务器fork()一个子进程,处理该请求,然后父进程继续监听外部请求。
但在UDP中,没有这种监听和连接机制,所以它必须等待前一处理完成才能继续处理下一个客户的请求。但并不是说UDP实现并发服务器是不可能的,只是与上面的实现稍有不同。原理如下:服务器(知名端口)等待一下客户的到来,当一个客户到来后,记下其IP和port,然后同理,服务器fork一个子进程,建立一个socket再bind一个随机端口,然后建立与客户的连接,并处理该客户的请求。父进程继续循环,等待下一个客户的到来。在tftpd中就是使用这种技术的。
大概的实现如下:
for ( ; ; )
{
...
recvform( &from_addr)
...
if (fork() == 0)
break; //子进程跳出循环
}
//child now here
peer = socket(AF_INET, SOCK_DGRAM, 0);
//绑定一个随机端口
myaddr.sin_port = htons(0);
bind(peer,(struct sockaddr *)&myaddr, /
sizeof myaddr)
connect(peer, (struct sockaddr *)&from, /
sizeof from)
但在UDP中,没有这种监听和连接机制,所以它必须等待前一处理完成才能继续处理下一个客户的请求。但并不是说UDP实现并发服务器是不可能的,只是与上面的实现稍有不同。原理如下:服务器(知名端口)等待一下客户的到来,当一个客户到来后,记下其IP和port,然后同理,服务器fork一个子进程,建立一个socket再bind一个随机端口,然后建立与客户的连接,并处理该客户的请求。父进程继续循环,等待下一个客户的到来。在tftpd中就是使用这种技术的。
大概的实现如下:
for ( ; ; )
{
...
recvform( &from_addr)
...
if (fork() == 0)
break; //子进程跳出循环
}
//child now here
peer = socket(AF_INET, SOCK_DGRAM, 0);
//绑定一个随机端口
myaddr.sin_port = htons(0);
bind(peer,(struct sockaddr *)&myaddr, /
sizeof myaddr)
connect(peer, (struct sockaddr *)&from, /
sizeof from)
0 0
- UDP高级技术(并发服务器)
- UDP高级技术(并发服务器)
- UDP并发技术
- 并发TCP服务器和并发UDP服务器
- 4高并发服务器:UDP局域网服务器(组播)
- UDP并发服务器设计讨论
- UDP并发服务器模型 一
- 解决UDP服务器并发困难
- Python的高级并发技术
- Linux网络编程之高级并发服务器(转)
- UNIX网络编程--实现并发UDP服务器
- UDP并发服务器模型 二:select机制
- TCP循环服务器 UDP循环服务器 TCP并发服务器
- Linux网络编程之高级并发服务器
- Linux网络编程之高级并发服务器
- Linux网络编程之高级并发服务器
- Linux网络编程之高级并发服务器
- Linux网络编程之高级并发服务器
- 周次的计算
- 常用的iOS第三方资源
- 高级编程之网络编程(四)
- 简易轮播文字的封装(流动字幕)
- lsnrctl status提示无监听
- UDP高级技术(并发服务器)
- 复选框checkbox控件
- Java、Android学习资源
- Edittext 监听输入完成
- leetcode:树
- 高级编程之数据结构
- linux终端命令大全
- 算法学习之二分法查找
- 判断两条线段是否相交(三种算法)