SOS—关于Client与Server互传结构的问题。

guowzgyc 2003-05-23 04:25:52
Client端Socket与Server端Socket都采用非阻塞连接。
分别在Client端与Server端定义如下结构:
xMessageID = (
MidClientLogin, // 用户登录请求
MidClientLoginS, // 用户登录请求成功
MidClientInfoRequest, // 客户信息请求
MidClientInfoResponse, // 客户信息反馈
MidClientUpLine, // 客户上线通知
MidClientDownLine, // 客户下线通知
MidServerExit, // 服务器关闭通知
MidClientToClient, // 客户间信息传递
MidBroadCast // 广播消息
);
TDataPackage = record
MessageId : xMessageID; //消息索引;
Sender : String; //发送者,服务器="Server";
Receiver : String; //接收者,如有多个接收者,则以"-"间开;
Data : String; //数据内容,如有多项内容,则以";"间开;
end;
Var
SendPackage : TDataPackage; //数据发送包
ReceivePackage : TDataPackage; //数据接收包

在Client端:
with SendPackage do begin
MessageId:=MidClientLogin;
……
end;
ClientSocket.socket.sendbuf(SendPackage,SizeOf(SendPackage));

在Server端的OnClientRead事件里:
Socket.ReceiveBuf(ReceivePackage,SizeOf(ReceivePackage));
case ReceivePackage.MessageID of
MidClientLogin: begin
SendPackage.MessageId:=MidClientLoginS;
SendPackage.Sender:='Server';
SendPackage.Receiver:=ReceivePackage.Sender;
SendPackage.Data:='Successful';
Socket.SendBufSendPackage,SizeOfSendPackage));
end;
MidClientInfoRequest: begin
ShowMessage('bbb');
end;
end;
出错,晕了。
...全文
38 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
failer 2003-05-23
  • 打赏
  • 举报
回复
boboiilee19() 说得有道理.
另外,建议将string型数据改为char的数组.
boboiilee19 2003-05-23
  • 打赏
  • 举报
回复
var
rdd:integer;
begin
......
rdd:=Socket.ReceiveBuf(ReceivePackage,2000);
....
end;

rdd为ReceivePackage的实际大小

1,593

社区成员

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

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