关于并发服务器的问题,请各位大侠指点

ljv_23 2001-07-26 11:17:51
我现在正在设计并发服务器以接收多客户机发送tcp消息,多客户机并发向一服务器同一端口发送消息,采用tcp机制,当不同客户机连接时,服务器便创建一线程以接收消息。

请问在这种方式下,服务器各接收线程收到的信息是否能正确完整的接收各客户机的信息,而不是信息混乱--在一个接收线程收到不同客户机发来的消息包的部分段落。

头有点大了,请大侠指教!
...全文
102 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
ljv_23 2001-08-06
  • 打赏
  • 举报
回复
问题已解决,多谢各位的帮助。后会。
benbensan 2001-07-30
  • 打赏
  • 举报
回复
“不同客户机发向同一端口的信息都暂存这里”这句话说明你的理解还是不对,tcp连接其实是唯一的,也就是一个IP地址加一个端口号形成和其他机器的唯一一个连接,所以呢服务器端对每一个客户都会新分配一个唯一的socket跟客户端连接,并且该端口不是你理解的监听端口。监听端口仅仅起到接受客户连接的作用,你在程序里是不会有对监听端口的读写的,建议你看一下socket的书籍,对你的理解会有帮助
ljv_23 2001-07-29
  • 打赏
  • 举报
回复
由于每一连接,服务器都分配一新的插口,进行不同客户机的通讯,插口标识不同的连接,所以应该不会乱,这应该是socket在底层来保证这种通讯的正确性,而不需要用户自己来判断识别,这一点我是考虑过的,可能我对其理解还不够。
因为在通讯时每一端口都分配一缓冲区,不同客户机发向同一端口的信息都暂存这里,当通讯频繁时肯定其缓冲区的信息来自不同的客户机,次序交错,但这种情况上层的程序是不需要来维护的,只管通过插口来取信息就是。

上述我的理解请各位师兄指点一下。多谢了。
alwaysakid 2001-07-27
  • 打赏
  • 举报
回复
这个做法违背了tcp/udp最基本的设计,
ip本身并没有端口的概念,tcp引入端口的概念就是为了区分不同的连接(multiplex/demultiplex)
如果要这样做,还不如用ip算了。

因为如果多个客户都要用同一端口,tcp协议栈无法区分不同的客户,于是区分的任务就必须你自己完成。
san_zhi 2001-07-27
  • 打赏
  • 举报
回复
常见的并发(Tcp(面向连接的)下)服务器是这样的:
Master1:socket() bind to port.
Master1:Listen() set passive model.
Master1:Infinite loop calling accept().为每一个connect request 创建一个子线程。
SubThread1:和client端communicate.
SubThread1:End,Quit sub thread.


benbensan 2001-07-27
  • 打赏
  • 举报
回复
我觉得你对socket的理解好像不是很对
socket的连接一般有两种一种是TCP一种是UDP,你说的应该是TCP
客户连接服务器时都是连接的服务器的监听端口,连接成功后,服务器会针对每个用户分配一个socket,以后客户和服务器的连接都是通过该端口,而不是你认为的监听端口,既然每用户一个端口,就不会存在信息混乱的现象
ITBUG 2001-07-27
  • 打赏
  • 举报
回复
同意benbensan:
应该是可以实现的,局域网多用户聊天程序不就是这样的吗?
服务器只有一个端口,多个客户机连接一个端口,实际上每一个客户机
连接到服务器都会新建一个socket绑定连接,所以虽然是同一端口,但
是不同的socket,应该不会乱的。
wwwunix 2001-07-26
  • 打赏
  • 举报
回复
只要程序控制好,每个线程能正确收到客户机的信息.大部分服务器都是这样的.
dennis_duan 2001-07-26
  • 打赏
  • 举报
回复
不太懂你的意思。怎么可能在一个端口上建立多个TCP/IP连接呢?

一定要所有的客户机向同一端口发送消息吗?
一般的做法是在服务器上开一个端口Listen,客户机通过这个Listen端口和服务器建立连接(不是直接连接在这个端口上),msdn中有一个chat的例程。
Suddy 2001-07-26
  • 打赏
  • 举报
回复
文件描述符不乱,程序不会乱
以不乱应完乱

4,356

社区成员

发帖
与我相关
我的任务
社区描述
通信技术相关讨论
社区管理员
  • 网络通信
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧