分数比较少,最近刚学socket,问了好多问题,没啥分数了,大家包涵,先谢谢大家了!!!
(1)
socket异步方式的通信中客户端怎么和服务端进行多次交互呢??
(例如:客户端发送数据到服务端,服务端处理回发给客户端,客户端收到服务端回发的数据后再进行处理发给服务端,服务端收到了再次处理后又发给客户端.....)我试过了用多次Connect,就是客户端每一次向服务端发送数据时都重新建立连接,但是发现只有第一次发送数据后,服务端处理完回发,客户端收到的数据是正确的;而第二次建立连接后服务端收到数据,但是没有处理,造成客户端收到的回发数据还是第一次的(因为客户端用来存放服务回发的数据的变量是一个静态变量);
(2)
还有个疑问就是,就算这个方法可以了,那么客户端每发送一次都建立一个连接是不是会造成大的消耗??大家有没有好的建议,只建立一次连接就可以进行多次交互?(只能用同步吗?)(3)同步、异步的选择问题
假设环境:
客户端数量比较大,每次客户端登录后就与服务端建立连接(客户端把对应信息发送给服务端),然后客户端就可以断开与服务端的连接了(客户端不需要一直保持连接,可以是每隔N分钟再发送数据);
而当有需要时,原服务端也可以向原客户端发送命令,要求客户端重新再发送数据;(这样是不是原来的客户端和原来的服务端都要做成既有客户端功能又有服务端功能?)这里选择同步好还是异步好呢??(个人感觉同步简单,而且从性能上看的话这种多客户端、短连接的方式用异步不见得比同步好。)
但是用同步的话比较纠结的就是考虑到并发的问题,因为客户端的数量比较大。大家都来说说自己的想法啊,让我也参考、学习下;先谢谢啦!!

解决方案 »

  1.   

    1. 不应该,这一定是你的代码有问题,好好跟踪以下,或者贴代码上来。
    2. 根据情况看,如果你的通讯量很大,可以考虑使用长连接,建立一次链路,以后使用其发送数据,发送完成后不断开连路,留给下一次使用,如果通讯量小,那就用短连接。
    3. 可能需要使用长连接,也可以考虑使用udp