请教高人:winsock UDP Server 接收数据后调用消息处理类,却丢失客户端地址
时间:2011-09-04
来源:互联网
服务端
procedure TServerForm.WMSOCKET(var msg: TMessage);
var
addr: TSockAddrIn;
addrlen: Integer;
buffer: array [0..255] of byte;
SocketMsgHandler:TMsgHandler;
begin
case WSAGetSelectEvent(msg.LParam) of
FD_READ:
begin
addrlen:=sizeof(addr);
recvfrom(sock,buffer,255,@addr,addrlen);
SocketMsgHandler.handleMessage(buffer,addr);
end;
我的消息处理类也很简单,代码:
procedure TMsgHandler.handleMessage(buffer:array of byte;addr: TSockAddrIn);
begin
//先处理数据
.......
//然后返回处理结果,所用的sock已经从主类传递过来
sendto(sock,data,sizeof(data),0,@addr,addrlen);
end;
可是我的客户端死活等不到返回结果。
如果我把处理逻辑直接copy到主程序的消息函数中,客户端就可以成功收到消息,修改后可用的代码如下
procedure TServerForm.WMSOCKET(var msg: TMessage);
var
addr: TSockAddrIn;
addrlen: Integer;
buffer: array [0..255] of byte;
SocketMsgHandler:TMsgHandler;
begin
case WSAGetSelectEvent(msg.LParam) of
FD_READ:
begin
addrlen:=sizeof(addr);
recvfrom(sock,buffer,255,@addr,addrlen);
//直接理数据
.......
//然后返回处理结果,所用的sock已经从主类传递过来
sendto(sock,data,sizeof(data),0,@addr,addrlen);
end;
请问各位老大,是什么原因呢?
procedure TServerForm.WMSOCKET(var msg: TMessage);
var
addr: TSockAddrIn;
addrlen: Integer;
buffer: array [0..255] of byte;
SocketMsgHandler:TMsgHandler;
begin
case WSAGetSelectEvent(msg.LParam) of
FD_READ:
begin
addrlen:=sizeof(addr);
recvfrom(sock,buffer,255,@addr,addrlen);
SocketMsgHandler.handleMessage(buffer,addr);
end;
我的消息处理类也很简单,代码:
procedure TMsgHandler.handleMessage(buffer:array of byte;addr: TSockAddrIn);
begin
//先处理数据
.......
//然后返回处理结果,所用的sock已经从主类传递过来
sendto(sock,data,sizeof(data),0,@addr,addrlen);
end;
可是我的客户端死活等不到返回结果。
如果我把处理逻辑直接copy到主程序的消息函数中,客户端就可以成功收到消息,修改后可用的代码如下
procedure TServerForm.WMSOCKET(var msg: TMessage);
var
addr: TSockAddrIn;
addrlen: Integer;
buffer: array [0..255] of byte;
SocketMsgHandler:TMsgHandler;
begin
case WSAGetSelectEvent(msg.LParam) of
FD_READ:
begin
addrlen:=sizeof(addr);
recvfrom(sock,buffer,255,@addr,addrlen);
//直接理数据
.......
//然后返回处理结果,所用的sock已经从主类传递过来
sendto(sock,data,sizeof(data),0,@addr,addrlen);
end;
请问各位老大,是什么原因呢?
作者: larrykan 发布时间: 2011-09-04
这个问题自己解决了
作者: larrykan 发布时间: 2011-10-07
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28