ClientSocket接收数据太长时的问题急,在线等 当ServerSocket向ClientSocket发送较长数据。用的是SendBuf方法经调试发现ClientSocket的Read事件多次发生,每次只接收8192个字节,(最后一次除外),但是所有的字节数加起来比ServerSocket发送过的的字节数大。这是怎么回事呀?我的程序必须等待所有的数据接收完后才能进行下一步处理,该如何做呀? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我也遇上了这个问题,应该是发送和接收缓冲区大小的问题,但ServerSocket和ClientSocket都没有设发送和接收缓冲区大小的设置!!!在D7中用TidTCPClient和TidTCPServer就可以高缓冲区大小。可以解决这个问题!!!但我又不知TCPServer怎样发数据给TCPClient,郁闷ing!!!! 是由于socket.ReceiveLength和实际接收的长度不一致造成的,在计算长度的时候用实际接收长度累加,也就是用socket.ReceiveBuf的返回值计算,不要用socket.ReceiveLength。 to kmzym:我调试过了,当传输量于于8192字节时,每次传递的字节数socket.ReceiveBuf与socket.ReceiveLength的长度是一样的;总值加起来都比实际发送字节要大有什么方法让等数据全部接收完后再执行Read事件 to cnstudio(菜鸟学编程) socket.ReceiveBuf我用了很多,发送大文件的时候也没有发现你所说的问题。可以载发送的数据大小放在数据头里,接收指定大小的数据。 另外要考虑流式socket会出现粘包的情况,这也可能造成接收到的比期待的数据大。 修改数据库中纪录的问题 超市小票打印是怎么实现 50分看程序找错误 关于如何截获打印内容 请问怎么捕捉主键重复时报的的异常? 有关dbmeno的小问题 求助:grid表中加入时间 参数错误 delphi7.0中的打印组件怎找 delphi webservice问题 SQL Server 2000中文版下载分享 基础模态窗口问题,百思不得其解。望高人指点,50分。
在D7中用TidTCPClient和TidTCPServer就可以高缓冲区大小。可以解决这个问题!!!但我又不知TCPServer怎样发数据给TCPClient,郁闷ing!!!!
我调试过了,当传输量于于8192字节时,每次传递的字节数socket.ReceiveBuf与socket.ReceiveLength的长度是一样的;
总值加起来都比实际发送字节要大
有什么方法让等数据全部接收完后再执行Read事件
socket.ReceiveBuf我用了很多,发送大文件的时候也没有发现你所说的问题。可以载发送的数据大小放在数据头里,接收指定大小的数据。