u_p2p_chat.pas

来自「以前写的一个利用P2P 技术的一个通讯的例子。里面用到了 DBISAM 、IND」· PAS 代码 · 共 56 行

PAS
56
字号
unit U_P2P_CHAT;

interface

uses
   SysUtils, Classes, DB, dbisamtb, IdUDPBase, IdUDPClient, IdBaseComponent,
   IdComponent, IdTCPConnection, IdTCPClient, IdUDPServer, IdSocketHandle, p2p_public;

procedure SendMsgButtonClick(Sender: TObject);

implementation
uses u_web_xtdl;
var
   ServerIP, MyPublicIP, MyAccount: string;
   ServerPORT, MyPublicPORT: integer;

//发送消息

procedure SendMsgButtonClick(Sender: TObject);
var
   ChatDataPackage: TChatDataPackage;
   _ToIP, _SendMsg, _ToAccount: string;
   _ToPORT: Integer;
   //tempItem: TListItem;
begin
   {tempItem := UserList.Selected;
   if (not assigned(tempItem)) or (tempItem = nil) then
      begin
         MessageBox(self.Handle, '请选择消息接收者! ', '提示', 0);
         exit;
      end;
   _ToAccount := tempItem.Caption;
   _ToIp := tempItem.SubItems[0];
   _ToPORT := StrToInt(tempItem.SubItems[1]);
   _SendMsg := SendMsgEdit.Text;
   if length(_SendMsg) > 500 then
      exit;
   with ChatDataPackage do
      begin
         Head.MsgType := IntToStr(ChatMsgSign);
         StrPCopy(Body.fromAccount, MyAccount);
         StrPCopy(Body.toAccount, _ToAccount);
         StrPCopy(Body.Msg, _SendMsg);
         if CheckBox1.Checked then
            StrPCopy(Body.IsNeedReBack, IsTrue)
         else
            StrPCopy(Body.IsNeedReBack, IsFalse);
         StrPCopy(Body.IsReBackSigh, IsFalse);
         //
      end;
   UdpClient.SendBuffer(_ToIP, _ToPORT, ChatDataPackage, SizeOf(ChatDataPackage));  }
end;

end.

 

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?