Y
yiqifengfa
Unregistered / Unconfirmed
GUEST, unregistred user!
前人用delphi编的服务器用来和VC编的客户端通信,有些不合理的地方,老板让我这个没接触过Delphi的新手修改,有些程序看不通望大牛指导:按文档说明应当是:服务器与客户端通信时:服务器端确认后返回值4E4E客户端每发送1包,等待服务器返回确认。如果返回0x0E0E,表示数据传送正确,继续下一包;如果返回0x4545,表示数据传送错误,重新发送这一包。通信协议中应该有类似以上的关键字,但是我从下面这段(即与客户端进行socket连接的一段程序)中并没有看懂相关的东西,该段后半部分的一句ClientSocket.SendText('E');这个倒是符合要求 E的ASCII即16进制的45相关语句如下:Begin While Not Terminated And ClientSocket.Connected Do begin Try //如果没有接受数据,延时10秒后中断连接线程 SocketStream := TWinSocketStream.Create(ClientSocket, 10000); Try if Not RecvingClient then begin FillChar(FirstData, SizeOf(FirstData), 0); If SocketStream.Read(FirstData,8) = 0 Then Begin ClientSocket.SendText('Timeout on Server'+#13#10);//这句向socket发送的是什么?????????? sleep(1); ClientSocket.Close; Terminate; End; CBufRecv:=FirstData; if JudgeCustomer(CBufRecv) then begin ClientSocket.SendBuf(CBufRecv^,2);//这句是否也是和客户端连接的。发送内容是什么呢??????? //列为已注册用户 InsertClientToTre(ClientSocket.RemoteAddress,FrmMain.TreeView1.Items[0]); end else begin //列为未知用户 InsertClientToTre(ClientSocket.RemoteAddress,FrmMain.TreeView1.Items[1]); ClientSocket.SendText(Copy(String(FirstData),0,2));//该句发送的是????????? CBufRecv^:=char(5); end;