tcp/ip 读取大量数据如何处理? (300分)

  • 主题发起人 主题发起人 wwwljy
  • 开始时间 开始时间
W

wwwljy

Unregistered / Unconfirmed
GUEST, unregistred user!
[8D]本人正在做一个socket server端处理的程序,主要实现以下功能:
1、读取上百个client发送来的数据;
2、对数据进行消息的分析处理;
3、发送给相关的clents
本人有几个困惑:
1、 在接收数据时,由于数据可能比较大,尝试使用流的方式,但读取后对流的删除等比较烦,有没有好的办法?
2、尝试使用大型数组的方式,但消耗内存太大,怎么办?
3、 clients来源于另外同一个局域网,因此显示连接的IP地址、PORT都相同,由于返回消息时需要对收到的消息做进一步处理,故不能根据
SOCKETSERVER.CLIENTS来回复,如何解决?

谢谢各位!能解决给大量的分:)!!!!!![^]
 
建议你不要使用socket控件,写一个低层的socket,你可以派生多个线程,让每个线程照顾一个连接
 
UDP吧,写好发送和接收指令就可以了
 
数据量大的时候最好不要用udp,会照成数据丢失的。
建议还是用api编写,这样容易控制整个流程,处理上也比较简单。
对数据的接收存放是一个问题,要尽量减少对内存的大量copy,我觉得用数组就可以了。
如果是频繁使用,就定义一个全局变量,可以减少内存操作(如开辟空间等)。
返回结果时,只要在连接时记录每个连接的连接描述字,如果用控件,一般是socket.handle,
结果就可以从这个描述字里返回。这里如果是用api写,就简单多了。

其他问题可以自己考虑,或看看一些例子。我以前在unix下写过很多,留个qq,可以交流。
 
我的QQ:26129127
 
后退
顶部