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;
出错,晕了。