⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 u_p2p_chat.pas

📁 以前写的一个利用P2P 技术的一个通讯的例子。里面用到了 DBISAM 、INDY 控件。
💻 PAS
字号:
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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -