利用Delphi编写Socket通信程序

豆豆网   技术应用频道   2006年07月31日  【字号: 收藏本文

本文详细介绍利用Delphi编写Socket通信程序

  · 客户端源码(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.

作者:AustinLei    责编:豆豆技术应用

正在加载评论...