软件模块化时的网络通信有关问题
软件模块化时的网络通信问题?
局域网中有两台电脑,A和B,A上有N个客户端,B上有一个服务器(只有一个),客户端和服务器通信。异步。
现在有两种通信方法:
1、N个客户端共享一个socket,抢夺socket使用权,向服务器发送。服务器回传的数据通过应用层协议中的记号作软路由,方便区分是回传给哪个客户端的。
2、N个客户端和服务器单独通信。
第1个方式好处就是客户端再多、运行客户端的电脑再多,socket连接数都降到最低。但我担心它是否会影响速度和效率,还有抢夺方式是否可能导致有的客户端长时间得不到发送权。
第2个方式好处就是简单,但一台电脑上运行的客户端多了之后,连接数增加较多。
我在把软件划分为模块时遇到了问题,才想到这两种方式的,比如,客户端的多个模块(DLL)都需要和服务器通信,这些模块和服务器的网络通信(发送、接收)是由EXE统一管理网络通信还是各个模块自行完成socket通信?
请大家帮忙思考一下各种利弊!
------解决方案--------------------
我觉得还是第二种占有吧。第一个虽然省了资源,但是可能会造成堵塞,甚至超时?
------解决方案--------------------
我选用第一种
A收到B的消息后再分发
------解决方案--------------------
第二种实现起来比较容易, 稳定. 如果客户端之间的数据没有共享,也就是每个客户端拿到数据后,都是自己用, 那么建议使用第二种方案.
另外, 服务器连接数多这个问题并不像想象的那么严重.
局域网中有两台电脑,A和B,A上有N个客户端,B上有一个服务器(只有一个),客户端和服务器通信。异步。
现在有两种通信方法:
1、N个客户端共享一个socket,抢夺socket使用权,向服务器发送。服务器回传的数据通过应用层协议中的记号作软路由,方便区分是回传给哪个客户端的。
2、N个客户端和服务器单独通信。
第1个方式好处就是客户端再多、运行客户端的电脑再多,socket连接数都降到最低。但我担心它是否会影响速度和效率,还有抢夺方式是否可能导致有的客户端长时间得不到发送权。
第2个方式好处就是简单,但一台电脑上运行的客户端多了之后,连接数增加较多。
我在把软件划分为模块时遇到了问题,才想到这两种方式的,比如,客户端的多个模块(DLL)都需要和服务器通信,这些模块和服务器的网络通信(发送、接收)是由EXE统一管理网络通信还是各个模块自行完成socket通信?
请大家帮忙思考一下各种利弊!
------解决方案--------------------
我觉得还是第二种占有吧。第一个虽然省了资源,但是可能会造成堵塞,甚至超时?
------解决方案--------------------
我选用第一种
A收到B的消息后再分发
------解决方案--------------------
第二种实现起来比较容易, 稳定. 如果客户端之间的数据没有共享,也就是每个客户端拿到数据后,都是自己用, 那么建议使用第二种方案.
另外, 服务器连接数多这个问题并不像想象的那么严重.