致kxy:
我想了一个办法,定义一个计数器,只要接收到UDP的信息超过一次时,就Exit,这样一来到是可以正常打开TCP Socket了,也算是解决了问题,不过这样的解决方法总是让我心里没底,毕竟连续接收UDP根本原因还不清楚.
不过,在使用TCP Socket的ReceiveBuf方法接收时,接收到的数据是错误的.我知道传来的数据的长度和结构,因此定义了一个record来存放,如下:
Type
Rec=record
...
...
end;
TForm1.ClientSocketRead(sender:tobject;socket:TCustomWinSocket);
var
MyRec:Rec;
begin
...
Socket.receiveBuf(Myrec,sizeof(Rec));
...
end;
我这样使用语句是否会产生错误?希望能指教1谢谢!
致dudo:
message没有多大,如下:
type
TMyRec=record
Message_type:word;
Client_Applic_Name:array [0..15] of char;
Link_Number:word;
Serial_Number:dword;
Server_Applic_Name:array [0..15] of char;
Server_Applic_Instance:word;
Session_type:word;
Inactivity_timeout:word;
end;
var
QMeg:TMyRec;
begin
with QMeg do
begin
Message_type:=0;
Client_Applic_Name:='HIL_LAN_LINK';
Link_Number:=1;
Serial_Number:=8000;
Server_Applic_Name:='HIL_SERVER';
Server_applic_instance:=0;
Session_type:=0;
Inactivity_timeout:=10;
end;
end;