PC端设置为服务器,串转网为客户端,现在当PC端的服务器程序启动后,开启串转网设备,服务器程序能够检测到串转网已经和服务器程序建立连接,可是串转网设备发送数据过来时,服务器程序却没有接受到数据(我的服务器程序能和用idtcpclient编写的客户端程序通信正常),请问可能是什么原因。
解决方案 »
- 谁有别的办法用Delphi写游戏存档
- 初学者求救。。。。下面代码,运行后,显示list index out of bounds(0),不懂什么意思。运行后,还有很多问题。。。。。请大家帮帮忙啊
- 如果用SQL做到以下效果? 想不通!
- 50分求,多表查询SQL语句,在线急等!!!!!!!!!!!!!!!!
- 流文件
- 一个简单问题
- 求助:Delphi里有没有指向类的指针?
- 程序在最后退出后,出错,没有办法用设置断点的方法查错。有没有遇见过同样问题的??
- 我的 delphi怎么了?怎么要求注册了?
- 关于打开对话框的问题(在线等待)
- 如何实现类似process explorer的功能
- 如何求多段时间的汇总值
Readln函数是以#13或#10或者#13#10作为结束符的,如果在通讯协议中没有定义这样的结束符,则最好不要用Readln函数。
我用fillchar定义接收指定的包,可串转网设备接收到的数据长度不是固定的,如果用fillchar接收到的数据会出现第N包数据的某些字符+ 第(N-1)包数据的某些字符。
如果我想把每次传输的数据接收完整还需要在哪些方面做处理。
var
AData : array [0..49] of Byte;
begin
AThread.Connection.ReadTimeout := 5000; //设置超时时间
AThread.Connection.ReadBuffer(AData, Sizeof(AData));
end;
我有点纳闷了,为什么我用pc机模拟客户端发送数据,服务器端接收得很好,想发几个数据,服务器端就能接收几个数据,是用CurrentReadBuffer接收。
而一用上串转网设备后,接收数据就惨不忍睹了。
用下面代码试试。
RecvCount:=self.FThread_STN.Connection.IOHandler.InputBuffer.Size;
if RecvCount>0 then
begin
with self.FThread_STN.Connection.IOHandler.InputBuffer do
begin
RecvCount:=size;
//读TCP/IP数据到缓冲
ExtractToBytes(RecvBuffer_NTS,Size,false);
end;
end;