日期:2014-05-20  浏览次数:20563 次

Socket通信如何处理多种流
第一个问题是,客户端与服务器端需要传递多种数据,1.字符串,2.序列化后的对象,3.文件(txt,jpg,doc等),怎么来识别,区分它们,然后用正确的方式处理流。我想到的是每次先传一个字符串,告诉服务器端接下来的流是什么类型,但又觉得这样的处理方法不太好。第一次碰到这个问题,所以想问一下,常用的处理方法是怎样?
  然后第二个问题,多个客户端之间需要即时语音交流,所以客户端还要频繁地向服务器端发送一个语音的流,那么是否需要为语音流建立一个专用的socket?这样客户端就要与服务器端维持两个socket通信。
  还望大家不吝赐教!

------解决方案--------------------
第一个问题,就是如你所想的,每次传递之前,先有对本次传递消息的固定消息头信息,说明消息类型、消息长度等“元数据”。想想HTTP不也类似如此么?ContentType

第二个问题,一般实时性要求高的,确实会采用不同的通道。当然如果你发送处理模块做得好,也可以共用一个通道。那么所有信息要做切片发送,比如你在传递文件的时候,要能继续保证语音通畅。但没必要,多建个连接也没啥了不起。