在serversocket接收数据的时候,从客户端连接到开始接收数据,直接可能会出现一个时间差,这个差之有时大有时小,9秒,11秒都可能出现,不知道这个是什么原因造成的,请各位帮忙分析一下,谢谢!
出现//××的两个地方!
procedure Tform1.ServerSocket1Accept(Sender: TObject;
Socket: TCustomWinSocket);
var
i : integer;
begin
for i := 0 to (ServerSocket1.Socket.ActiveConnections-1) do
begin
if ServerSocket1.Socket.Connections[i].SocketHandle = Socket.SocketHandle then
begin
section[i].linkTime := FormatDateTime('yyyy-mm-dd hh:mm:ss',Now) ; //××记录客户端连接的时间
end ;
end ;
end ;-----
procedure Tfrom1.ServerSocket1ClientRead(Sender : TObject;
Socket : TCustomWinSocket);
var
i : integer;
recstr : string;
retstr : string ;
starttime : string ;
begin
starttime := FormatDateTime('yyyy-mm-dd hh:mm:ss',now) ; //××开始接收数据的时间
recstr := Socket.ReceiveText;
retstr := '' ;
for i := 0 to (ServerSocket1.Socket.ActiveConnections-1) do
begin
if if ServerSocket1.Socket.Connections[i].SocketHandle = Socket.SocketHandle then
begin
.....
end ;
end ;
end ;
出现//××的两个地方!
procedure Tform1.ServerSocket1Accept(Sender: TObject;
Socket: TCustomWinSocket);
var
i : integer;
begin
for i := 0 to (ServerSocket1.Socket.ActiveConnections-1) do
begin
if ServerSocket1.Socket.Connections[i].SocketHandle = Socket.SocketHandle then
begin
section[i].linkTime := FormatDateTime('yyyy-mm-dd hh:mm:ss',Now) ; //××记录客户端连接的时间
end ;
end ;
end ;-----
procedure Tfrom1.ServerSocket1ClientRead(Sender : TObject;
Socket : TCustomWinSocket);
var
i : integer;
recstr : string;
retstr : string ;
starttime : string ;
begin
starttime := FormatDateTime('yyyy-mm-dd hh:mm:ss',now) ; //××开始接收数据的时间
recstr := Socket.ReceiveText;
retstr := '' ;
for i := 0 to (ServerSocket1.Socket.ActiveConnections-1) do
begin
if if ServerSocket1.Socket.Connections[i].SocketHandle = Socket.SocketHandle then
begin
.....
end ;
end ;
end ;
解决方案 »
- 那位高手会?使STRINGGRID的ROW进行跳动?
- 关于DBGridEH的棘手问题! --关于单元格颜色控制显示的问题!(100分双手奉)
- 这是对的么 ???
- 在线等:请教一个值得出100分的高难度的问题:如何写一个定时程序,没有你想象的那样简单,详情请进......
- 招募Delphi程序员(上海)
- 都说dxdbgrid控件带打印功能,怎样直接打印在dxdbgrid中显示的数据?(在线)
- 敬请看......
- Delphi程序员用个这个吗----------在线等待
- 如何能把IMAGE控件里面的图片数据流导出到内存变量中?
- 不知道算不算难的SQL语句,请进来看看先。
- 最近辞职,找工作其间没事干,找一份临时活干....
- 大家都来投票 不能让日本得逞!!!
首先是客户端发syn包,服务端收到后会回个syn包,客户端再回个ACK,服务端再回个ack,这个连接才算建立成功,才能互相发送数据。
如果建立过程中有报文丢失,会出现重传。
估计是你的网络状况不太好,出现报文传递时延长甚至丢包,导致时间不一及过长的。另外,cpu也不是你一个程序所使用,中间可能出现任务进程切换,也会导致时间不一,但这种影响造成的误差不至于你说的那么大。