TServerSoket接收包的问题

zpselect 2011-03-04 09:17:39
遇到一个很奇怪的问题,现在客户端是多台指纹机,每一次验征指纹的信息,Server1ClientRead事件
并没有触发,发而指纹机的心跳包信息却收到了(乱码信息),请问怎么解决这个问题?非常急啊!
如果哪位有多线程的实例的话,也可以指点一下!

procedure TForm1.Server1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var
re: pchar;
sbuf: string;
relong: integer;
begin
re := nil;
while socket.ReceiveLength > 0 do
begin
re := AllocMem(socket.receivelength); //申请内存
try
relong := socket.ReceiveLength;
Socket.ReceiveBuf(re^, Socket.receivelength);
sBuf := strpas(re);
Setlength(sbuf, relong);
finally
freemem(re);
end;
Memo1.Lines.Add('来自于客户端【' + Socket.RemoteAddress + '】的信息为【' + sbuf + '】');
end;
end;
...全文
105 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zpselect 2011-03-09
  • 打赏
  • 举报
回复
好的,谢谢。
donjin99 2011-03-08
  • 打赏
  • 举报
回复
TServerSocket的ServerType设置成stNonBlock在OnGetThread可以创建线程,具体可以看看罗小平的delphi精要里有个实例
zpselect 2011-03-08
  • 打赏
  • 举报
回复
听说在服务端用线程可以搞定,请问怎么写?
lovesf 2011-03-07
  • 打赏
  • 举报
回复
UDPServer?
加个序号以确认收到?
bdmh 2011-03-07
  • 打赏
  • 举报
回复
那得看你怎么处理的接收了,发多少收多少
zpselect 2011-03-07
  • 打赏
  • 举报
回复
我现在用TServerSoket做服务器,接收各Client发过来的消息,现在就是遇到一个情况,当多个Client同时发消息给Server时,就会出现,多个消息包在Server接收数据时,会被合并成一个消息包,请问怎样处理?

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧