并发无连接服务器----设计思想

    老师给的第二个小实验,编写基于数据报套接字的回射程序。使用循环服务器的方法非常简单,只需要使用while循环recvfrom就可以了,因为recvfrom没有接受到数据会阻塞在那,而且UDP不像TCP那样,需要listen、accept等步骤,不用为每个请求建立新的套接字。(个人感觉没有UDP门槛那么高,那么耗费资源,有点来者不拒的感觉~~)

编写并发无连接服务器就有些困难了。百度之,google之,感觉没有查到什么有价值的信息。混合一下网上的资料和自己知识,写一下该如何编写:

对于面向连接的并发服务器而言,每个连接限制了独立的数据收发双方,并发处理往往涉及为对不同客户的请求创建对应的子线程分别处理。由于每个客户在TCP连接上都有唯一的连接套接字进行标识,所以服务器的并发处理很简单。然而,当使用UDP时,由于没有连接存在,并发服务器的设计就没那么容易了。

根据客户需要,可以有两种并发性的设计【摘自Windows网络编程,刘琰主编】:

1.单次交互的客户请求

客户和服务器只进行一次交互,多个线程共享一个端口。

2.多次交互的客户请求


客户与服务器进行多次交互。69是服务器的知名端口,当客户发送后续数据报时,服务器为每个客户创建一个新的套接字,在其上绑定一个临时端口,如2132。然后使用这个套接字处理客户的后续所有数据交互。在客户端,客户在查看到服务器的第一个应答时将其源端口号记录下(临时端口),之后,将剩余数据发往该端口。


在实验中,我是根据第二种方法来设计服务器和客户端的。代码下一篇文章中贴上。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值