解决方案 »

  1.   

    你是要自定义通信协议吗?你这样的程序, 直接使用TCP通信.
    使用TCP的话, 发什么数据都是能保证正确性的, 就不用管什么握手了.
    直接解析即可.如果实在是要握手, 服务器收到后解析数据, 再发一个数据给客户端, 客户端收到确认信息, 再发一个确认信息给服务器, 这样基本上够了.
      

  2.   

    TCP是可靠通讯,所谓“握手”是人家TCP内部的网络传输层机制的事情,不需要拿到业务应用层来说。如果同一个客户端跟服务器端是长连接的,那么你需要自定义信令协议,以便服务器端可以从收到的大量byte中找到消息的边界。并且服务器端可以直接给客户端随时推送消息,客户端在初始化了TcpClient对象之后只要并行地进行Send和Receive即可。而如果客户端跟服务器之间是短连接的,那么客户端每一次发送消息给服务器端都需要TCP握手(同样这是TCP的内部机制,你无需编写任何代码),因此肯定比长连接方式要慢许多。但是好处就是可以保证消息是准确分界的(因为每一个消息都作为一个独立的客户端重新发起嘛),你无需去找消息边界。但是服务器端给客户端发送消息就比较困难(“打洞”其实是不靠谱的),甚至可能只有在客户端与服务器的“一问一答”的这个过程中让客户端的查询操作带回推送的消息,也就是说客户端可能需要不断有一个“查询服务器推送消息”的动作(当然啦,如果服务器暂时没有消息要推送,可以hang住这个请求一段时间、例如1分钟,然后才返回null信息)。
      

  3.   

    这类开发,要学会画一个最基本的UML时序图。如果仅凭看文字,有些不善于直观想象的人会糊涂。