科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件利用Delphi编写Socket通信程序

利用Delphi编写Socket通信程序

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文将本人总结出来的TServerSocket和TClientSocket两个组件的基本用法写出来,希望与您分享。

作者:AustinLei 来源:天极网 2007年10月31日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
· 客户端源码(uClientMain.pas):

unit uClientMain;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ScktComp, ComCtrls, ToolWin, ExtCtrls, StdCtrls, Buttons;
const
 SocketHost = '172.16.1.6'; //服务器端地址
type
 TfrmClientMain = class(TForm)
 ControlBar1: TControlBar;
 ToolBar1: TToolBar;
 tbConnected: TToolButton;
 tbSend: TToolButton;
 tbClose: TToolButton;
 tbDisconnected: TToolButton;
 ClientSocket: TClientSocket;
 Edit1: TEdit;
 Memo1: TMemo;
 StatusBar: TStatusBar;
 btnSend: TBitBtn;
 procedure tbConnectedClick(Sender: TObject);
 procedure tbDisconnectedClick(Sender: TObject);
 procedure ClientSocketRead(Sender: TObject; Socket: TCustomWinSocket);
 procedure tbSendClick(Sender: TObject);
 procedure tbCloseClick(Sender: TObject);
 procedure FormShow(Sender: TObject);
 procedure ClientSocketConnect(Sender: TObject;
 Socket: TCustomWinSocket);
 procedure ClientSocketConnecting(Sender: TObject;
 Socket: TCustomWinSocket);
 procedure ClientSocketDisconnect(Sender: TObject;
 Socket: TCustomWinSocket);
 procedure FormClose(Sender: TObject; var Action: TCloseAction);
 procedure ClientSocketError(Sender: TObject; Socket: TCustomWinSocket;
 ErrorEvent: TErrorEvent; var ErrorCode: Integer);
 private
 { Private declarations }
 public
 { Public declarations }
 end;
 var
  frmClientMain: TfrmClientMain;
  implementation
  {$R *.DFM}
  //打开套接字连接
  procedure TfrmClientMain.tbConnectedClick(Sender: TObject);
  begin
   ClientSocket.Open ;
  end;
  //关闭套接字连接
  procedure TfrmClientMain.tbDisconnectedClick(Sender: TObject);
  begin
   ClientSocket.Close;
  end;
  //接受服务器端的回复
  procedure TfrmClientMain.ClientSocketRead(Sender: TObject;Socket: TCustomWinSocket);
  begin
   Memo1.Lines.Add(Socket.ReceiveText);
  end;
  //发送信息到服务器端
  procedure TfrmClientMain.tbSendClick(Sender: TObject);
  begin
   ClientSocket.Socket.SendText(Edit1.Text);
  end;
  procedure TfrmClientMain.tbCloseClick(Sender: TObject);
  begin
   Close;
  end;
  //设置要连接的服务器端地址
  procedure TfrmClientMain.FormShow(Sender: TObject);
  begin
   ClientSocket.Host := SocketHost;
  end;
  //已经连接到服务器端
  procedure TfrmClientMain.ClientSocketConnect(Sender: TObject;Socket: TCustomWinSocket);
  begin
   tbSend.Enabled := True;
   tbDisconnected.Enabled :=True;
   btnSend.Enabled := True;
   StatusBar.Panels[0].Text := '已经连接到 '+ Socket.RemoteHost ;
  end;
  //正在连接到服务器端
  procedure TfrmClientMain.ClientSocketConnecting(Sender: TObject;Socket: TCustomWinSocket);
  begin
   StatusBar.Panels[0].Text := '正在连接到服务器... ' ;
  end;
  //当断开与服务器端的连接时发生
  procedure TfrmClientMain.ClientSocketDisconnect(Sender: TObject;
Socket: TCustomWinSocket);
  begin
   tbSend.Enabled := False;
   btnSend.Enabled := False;
   tbDisconnected.Enabled := False;
   StatusBar.Panels[0].Text := '已经断开与 '+ Socket.RemoteHost +' 的连接';
  end;
  procedure TfrmClientMain.FormClose(Sender: TObject;
var Action: TCloseAction);
  begin
   ClientSocket.Close ;
  end;
  //当与服务器端的连接发生错误时
  procedure TfrmClientMain.ClientSocketError(Sender: TObject;
Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;var ErrorCode: Integer);
  begin
   StatusBar.Panels[0].Text := '与服务器端的连接发生错误';
   ErrorCode := 0;
  end;
 end.

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章