

0
0
±ÊÕßÔÚ¹¤×÷ÖÐÓöµ½¶Ô¾ÖÓòÍøÖи÷¹¤×÷Õ¾Óë·þÎñÆ÷Ö®¼ä½øÐÐSocketͨÐŵÄÎÊÌâ¡£ÏÖÔÚ½«±¾ÈË×ܽá³öÀ´µÄTServerSocketºÍTClientSocketÁ½¸ö×é¼þµÄ»ù±¾Ó÷¨Ð´³öÀ´£¬Ï£ÍûÓëÄú·ÖÏí¡£
ClientSocket×é¼þΪ¿Í»§¶Ë×é¼þ¡£ËüÊÇͨÐŵÄÇëÇó·½£¬Ò²¾ÍÊÇ˵£¬ËüÊÇÖ÷¶¯µØÓë·þÎñÆ÷¶Ë½¨Á¢Á¬½Ó¡£
ServerSocket×é¼þΪ·þÎñÆ÷¶Ë×é¼þ¡£ËüÊÇͨÐŵÄÏìÓ¦·½£¬Ò²¾ÍÊÇ˵£¬ËüµÄ¶¯×÷ÊǼàÌýÒÔ¼°±»¶¯½ÓÊܿͻ§¶ËµÄÁ¬½ÓÇëÇ󣬲¢¶ÔÇëÇó½øÐлظ´¡£
ServerSocket×é¼þ¿ÉÒÔͬʱ½ÓÊÜÒ»¸ö»ò¶à¸öClientSocket×é¼þµÄÁ¬½ÓÇëÇ󣬲¢Óëÿ¸öClientSocket×é¼þ½¨Á¢µ¥¶ÀµÄÁ¬½Ó£¬½øÐе¥¶ÀµÄͨÐÅ¡£Òò´Ë£¬Ò»¸ö·þÎñÆ÷¶Ë¿ÉÒÔΪ¶à¸ö¿Í»§¶Ë·þÎñ¡£
±¾Àý°üÀ¨Ò»¸ö·þÎñÆ÷¶Ë³ÌÐòºÍÒ»¸ö¿Í»§¶Ë³ÌÐò¡£¿Í»§¶Ë³ÌÐò¿ÉÒԷŵ½¶à¸ö¼ÆËã»úÉÏÔËÐУ¬Í¬Ê±Óë·þÎñÆ÷¶Ë½øÐÐÁ¬½ÓͨÐÅ¡£
±¾ÀýµÄÖØµã£¬Ò»ÊÇÑÝʾ¿Í»§¶ËÓë·þÎñÆ÷¶ËÈçºÎͨÐÅ£»¶þÊǵ±Óжà¸ö¿Í»§¶ËͬʱÁ¬½Óµ½·þÎñÆ÷¶Ëʱ£¬·þÎñÆ÷¶ËÈçºÎʶ±ðÿ¸ö¿Í»§¶Ë£¬²¢¶ÔÇëÇó¸ø³öÏàÓ¦µÄ»Ø¸´¡£ÎªÁ˱£Ö¤Ò»¸ö¿Í»§¶Ë¶Ï¿ªÁ¬½Óʱ²»Ó°ÏìÆäËü¿Í»§¶ËÓë·þÎñÆ÷¶ËµÄͨÐÅ£¬Í¬Ê±±£Ö¤·þÎñÆ÷¶ËÄܹ»ÕýÈ·»Ø¸´¿Í»§¶ËµÄÇëÇó£¬ÔÚ±¾ÀýÖÐÉùÃ÷ÁËÒ»¸ö¼Ç¼ÀàÐÍ£º
type
client_record=record
CHandle: integer; //¿Í»§¶ËÌ×½Ó×Ö¾ä±ú
CSocket:TCustomWinSocket; //¿Í»§¶ËÌ×½Ó×Ö
CName:string; //¿Í»§¶Ë¼ÆËã»úÃû³Æ
CAddress:string; //¿Í»§¶Ë¼ÆËã»úIPµØÖ·
CUsed: boolean; //¿Í»§¶ËÁª»ú±êÖ¾
end;
ÀûÓÃÕâ¸ö¼Ç¼ÀàÐÍÊý¾Ý±£´æ¿Í»§¶ËµÄÐÅÏ¢£¬Í¬Ê±±£´æµ±Ç°¿Í»§¶ËµÄÁ¬½Ó״̬¡£ÆäÖУ¬CHandle±£´æ¿Í»§¶ËÌ×½Ó×Ö¾ä±ú£¬ÒÔ±ã׼ȷ¶¨Î»Ã¿¸öÓë·þÎñÆ÷¶Ë±£³ÖÁ¬½ÓµÄ¿Í»§¶Ë£»Csocket±£´æ¿Í»§¶ËÌ×½Ó×Ö£¬Í¨¹ýËü¿ÉÒÔ¶Ô¿Í»§¶Ë½øÐлظ´¡£Cused¼Ç¼µ±Ç°¿Í»§¶ËÊÇ·ñÓë·þÎñÆ÷¶Ë±£³ÖÁ¬½Ó¡£
ServerSocketµÄÊôÐÔ£º
¡¤ Port£¬ÊÇͨÐŵĶ˿ڣ¬±ØÐëÉèÖá£ÔÚ±¾ÀýÖÐÉèÖÃΪ1025£»
¡¤ ServerTypt£¬·þÎñÆ÷¶Ë¶ÁдÐÅÏ¢ÀàÐÍ£¬ÉèÖÃΪstNonBlocking±íʾÒì²½¶ÁдÐÅÏ¢£¬±¾ÀýÖвÉÓÃÕâÖÖ·½Ê½¡£
¡¤ ThreadCacheSize£¬¿Í»§¶ËµÄ×î´óÁ¬½ÓÊý£¬¾ÍÊÇ·þÎñÆ÷¶Ë×î¶àÔÊÐí¶àÉÙ¿Í»§¶ËͬʱÁ¬½Ó¡£±¾Àý²ÉÓÃĬÈÏÖµ10¡£
ÆäËüÊôÐÔ²ÉÓÃĬÈÏÉèÖü´¿É¡£
ClientSocketµÄÊôÐÔ£º
¡¤ Port£¬ÊÇͨÐŵĶ˿ڣ¬±ØÐëÓë·þÎñÆ÷¶ËµÄÉèÖÃÏàͬ¡¢¡£ÔÚ±¾ÀýÖÐÉèÖÃΪ1025£»
¡¤ ClientType¡¢£¬¿Í»§¶Ë¶ÁдÐÅÏ¢ÀàÐÍ¡¢£¬Ó¦¸ÃÓë·þÎñÆ÷¶ËµÄÉèÖÃÏàͬ£¬ÎªstNonBlocking±íʾÒì²½¶ÁдÐÅÏ¢¡¢¡£
¡¤ Host¡¢£¬¿Í»§¶ËÒªÁ¬½ÓµÄ·þÎñÆ÷µÄIPµØÖ·¡£±ØÐëÉèÖᢣ¬µ±È»Ò²¿ÉÒÔÔÚ´úÂëÖж¯Ì¬ÉèÖᢡ£
ÆäËüÊôÐÔ²ÉÓÃĬÈÏÉèÖü´¿É¡£
³ÌÐòÔ´´úÂë:
¡¤ ·þÎñÆ÷¶ËÔ´Â루uServerMain.pas£©£º
unit uServerMain;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ScktComp, ToolWin, ComCtrls, ExtCtrls, StdCtrls, Buttons;
const
CMax=10; //¿Í»§¶Ë×î´óÁ¬½ÓÊý
type
client_record=record
CHandle: integer; //¿Í»§¶ËÌ×½Ó×Ö¾ä±ú
CSocket:TCustomWinSocket; //¿Í»§¶ËÌ×½Ó×Ö
CName:string; //¿Í»§¶Ë¼ÆËã»úÃû³Æ
CAddress:string; //¿Í»§¶Ë¼ÆËã»úIPµØÖ·
CUsed: boolean; //¿Í»§¶ËÁª»ú±êÖ¾
end;
type
TfrmServerMain = class(TForm)
ServerSocket: TServerSocket;
ControlBar1: TControlBar;
ToolBar1: TToolBar;
tbConnect: TToolButton;
tbClose: TToolButton;
tbDisconnected: TToolButton;
Edit1: TEdit;
Memo1: TMemo;
StatusBar: TStatusBar;
procedure tbConnectClick(Sender: TObject);
procedure tbDisconnectedClick(Sender: TObject);
procedure ServerSocketClientRead(Sender: TObject;
Socket: TCustomWinSocket);
procedure ServerSocketListen(Sender: TObject;
Socket: TCustomWinSocket);
procedure ServerSocketClientConnect(Sender: TObject;
Socket: TCustomWinSocket);
procedure ServerSocketClientDisconnect(Sender: TObject;
Socket: TCustomWinSocket);
procedure tbCloseClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure ServerSocketGetSocket(Sender: TObject; Socket: Integer;
var ClientSocket: TServerClientWinSocket);
procedure ServerSocketClientError(Sender: TObject;
Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
var ErrorCode: Integer);
private
{ Private declarations }
public
{ Public declarations }
session: array[0..CMax] of client_record; //¿Í»§¶ËÁ¬½ÓÊý×é
Sessions: integer; //¿Í»§¶ËÁ¬½ÓÊý
end;
var
frmServerMain: TfrmServerMain;
implementation
{$R *.DFM}
//´ò¿ªÌ×½Ó×ÖÁ¬½Ó¡¢£¬²¢Ê¹Ì×½Ó×Ö½øÈë¼àÌý״̬
procedure TfrmServerMain.tbConnectClick(Sender: TObject);
begin
ServerSocket.Open ;
end;
//¹Ø±ÕÌ×½Ó×ÖÁ¬½Ó¡¢£¬²»ÔÙ¼àÌý¿Í»§¶ËµÄÇëÇó
procedure TfrmServerMain.tbDisconnectedClick(Sender: TObject);
begin
ServerSocket.Close;
StatusBar.Panels[0].Text :='·þÎñÆ÷Ì×½Ó×ÖÁ¬½ÓÒѾ¹Ø±Õ£¬ÎÞ·¨½ÓÊܿͻ§¶ËµÄÁ¬½ÓÇëÇó.';
end;
//´Ó¿Í»§¶Ë¶ÁÈ¡ÐÅÏ¢
procedure TfrmServerMain.ServerSocketClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var
i:integer;
begin
//½«´Ó¿Í»§¶Ë¶ÁÈ¡µÄÐÅÏ¢Ìí¼Óµ½Memo1ÖÐ
Memo1.Lines.Add(Socket.ReceiveText);
for i:=0 to sessions do
begin
//È¡µÃÆ¥ÅäµÄ¿Í»§¶Ë
if session[i].CHandle = Socket.SocketHandle then
begin
session[i].CSocket.SendText('»Ø¸´¿Í»§¶Ë'+session[i].CAddress+' ==> '+Edit1.Text);
end;
end;
end;
//·þÎñÆ÷¶ËÌ×½Ó×Ö½øÈë¼àÌý״̬¡¢£¬ÒÔ±ã¼àÌý¿Í»§¶ËµÄÁ¬½Ó
procedure TfrmServerMain.ServerSocketListen(Sender: TObject;
Socket: TCustomWinSocket);
begin
StatusBar.Panels[0].Text :='µÈ´ý¿Í»§¶ËÁ¬½Ó...';
end;
//µ±¿Í»§¶ËÁ¬½Óµ½·þÎñÆ÷¶ËÒÔºó
procedure TfrmServerMain.ServerSocketClientConnect(Sender: TObject;
Socket: TCustomWinSocket);
var
i,j:integer;
begin
j:=-1;
for i:=0 to sessions do
begin
//ÔÚÔÓеĿͻ§¶ËÁ¬½ÓÊý×éÖÐÓÐÖжϵĿͻ§¶ËÁ¬½Ó
if not session[i].CUsed then
begin
session[i].CHandle := Socket.SocketHandle ;//¿Í»§¶ËÌ×½Ó×Ö¾ä±ú
session[i].CSocket := Socket; //¿Í»§¶ËÌ×½Ó×Ö
session[i].CName := Socket.RemoteHost ; //¿Í»§¶Ë¼ÆËã»úÃû³Æ
session[i].CAddress := Socket.RemoteAddress ;//¿Í»§¶Ë¼ÆËã»úIP
session[i].CUsed := True; //Á¬½ÓÊý×鵱ǰλÖÃÒѾռÓÃ
Break;
end;
j:=i;
end;
if j=sessions then
begin
inc(sessions);
session[j].CHandle := Socket.SocketHandle ;
session[j].CSocket := Socket;
session[j].CName := Socket.RemoteHost ;
session[j].CAddress := Socket.RemoteAddress ;
session[j].CUsed := True;
end;
StatusBar.Panels[0].Text := '¿Í»§¶Ë '+Socket.RemoteHost + ' ÒѾÁ¬½Ó';
end;
//µ±¿Í»§¶Ë¶Ï¿ªÁ¬½Óʱ
procedure TfrmServerMain.ServerSocketClientDisconnect(Sender: TObject;
Socket: TCustomWinSocket);
var
i:integer;
begin
for i:=0 to sessions do
begin
if session[i].CHandle =Socket.SocketHandle then
begin
session[i].CHandle :=0;
session[i].CUsed := False;
Break;
end;
end;
StatusBar.Panels[0].Text :='¿Í»§¶Ë '+Socket.RemoteHost + ' ÒѾ¶Ï¿ª';
end;
//¹Ø±Õ´°¿Ú
procedure TfrmServerMain.tbCloseClick(Sender: TObject);
begin
Close;
end;
procedure TfrmServerMain.FormCreate(Sender: TObject);
begin
sessions := 0;
end;
procedure TfrmServerMain.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
ServerSocket.Close ;
end;
//µ±¿Í»§¶ËÕýÔÚÓë·þÎñÆ÷¶ËÁ¬½Óʱ
procedure TfrmServerMain.ServerSocketGetSocket(Sender: TObject;
Socket: Integer; var ClientSocket: TServerClientWinSocket);
begin
StatusBar.Panels[0].Text :='¿Í»§¶ËÕýÔÚÁ¬½Ó...';
end;
//¿Í»§¶Ë·¢Éú´íÎó
procedure TfrmServerMain.ServerSocketClientError(Sender: TObject;
Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
var ErrorCode: Integer);
begin
StatusBar.Panels[0].Text :='¿Í»§¶Ë'+Socket.RemoteHost +'·¢Éú´íÎó¡¢£¡';
ErrorCode := 0;
end;
end.
¡¤ ¿Í»§¶ËÔ´Âë(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.
С½á
ÉÏÊö·½·¨ÊDZȽϼòµ¥µÄʵÏÖ·½·¨£¬Í¬Ê±Ò²ÊÇÏà¶Ô½ÏÈÝÒ×Àí½âµÄ·½·¨¡¢¡£Í¨¹ýÕâ¸ö·½·¨¡¢£¬±ÊÕ߳ɹ¦ÊµÏÖÁ˾ÖÓòÍøÄÚ¶à¸ö¿Í»§¶ËÓë·þÎñÆ÷¶Ë½øÐÐSocketͨÐŵŦÄÜ£¬Í¬Ê±¿ÉÒÔ±£Ö¤Ò»¸ö¿Í»§¶ËµÄÁ¬½Ó¡¢Í¨ÐÅ»òÊǶϿª¶¼²»Ó°ÏìÆäËü¿Í»§¶ËµÄÕý³£Í¨ÐÅ¡¢¡£
¸½Â¼£º
·þÎñÆ÷¶Ë´°ÌåºÍ¿Í»§¶Ë´°Ìå¼°×é¼þµÄÊôÐÔÉèÖòμÓÏàÓ¦µÄDFMÎļþ¡¢¡£
uServerMain.pas¶ÔÓ¦µÄDFMÎļþ(uServerMain.dfm)
object frmServerMain: TfrmServerMain
Left = 297
Top = 258
BorderIcons = [biSystemMenu, biMinimize]
BorderStyle = bsSingle
Caption = 'ServerSocket'
ClientHeight = 279
ClientWidth = 476
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
OnClose = FormClose
OnCreate = FormCreate
PixelsPerInch = 96
TextHeight = 13
object ControlBar1: TControlBar
Left = 0
Top = 0
Width = 476
Height = 30
Align = alTop
AutoSize = True
TabOrder = 0
object ToolBar1: TToolBar
Left = 11
Top = 2
Width = 459
Height = 22
ButtonHeight = 21
ButtonWidth = 55
Caption = 'ToolBar1'
EdgeInner = esNone
EdgeOuter = esNone
Flat = True
ShowCaptions = True
TabOrder = 0
object tbConnect: TToolButton
Left = 0
Top = 0
Caption = ' Á¬½Ó '
ImageIndex = 0
OnClick = tbConnectClick
end
object tbDisconnected: TToolButton
Left = 55
Top = 0
Caption = '¶Ï¿ª'
ImageIndex = 4
OnClick = tbDisconnectedClick
end
object tbClose: TToolButton
Left = 110
Top = 0
Caption = '¹Ø±Õ'
ImageIndex = 3
OnClick = tbCloseClick
end
end
end
object Edit1: TEdit
Left = 0
Top = 232
Width = 473
Height = 21
TabOrder = 1
Text = 'ÄãºÃ£¡'
end
object Memo1: TMemo
Left = 0
Top = 30
Width = 476
Height = 195
Align = alTop
TabOrder = 2
end
object StatusBar: TStatusBar
Left = 0
Top = 257
Width = 476
Height = 22
Panels = <
item
Width = 50
end>
SimplePanel = False
end
object ServerSocket: TServerSocket
Active = False
Port = 1025
ServerType = stNonBlocking
OnListen = ServerSocketListen
OnGetSocket = ServerSocketGetSocket
OnClientConnect = ServerSocketClientConnect
OnClientDisconnect = ServerSocketClientDisconnect
OnClientRead = ServerSocketClientRead
OnClientError = ServerSocketClientError
Left = 368
end
end
uClientMain.pas¶ÔÓ¦µÄDFMÎļþ(uClientMain.dfm)
object frmClientMain: TfrmClientMain
Left = 361
Top = 290
BorderIcons = [biSystemMenu, biMinimize]
BorderStyle = bsSingle
Caption = 'ClientSocket'
ClientHeight = 230
ClientWidth = 402
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
Position = poScreenCenter
OnClose = FormClose
OnShow = FormShow
PixelsPerInch = 96
TextHeight = 13
object ControlBar1: TControlBar
Left = 0
Top = 0
Width = 402
Height = 30
Align = alTop
AutoSize = True
TabOrder = 0
object ToolBar1: TToolBar
Left = 11
Top = 2
Width = 385
Height = 22
ButtonHeight = 21
ButtonWidth = 55
Caption = 'ToolBar1'
EdgeInner = esNone
EdgeOuter = esNone
Flat = True
ShowCaptions = True
TabOrder = 0
object tbConnected: TToolButton
Left = 0
Top = 0
Caption = ' Á¬½Ó '
ImageIndex = 0
OnClick = tbConnectedClick
end
object tbSend: TToolButton
Left = 55
Top = 0
Caption = '·¢ËÍ'
Enabled = False
ImageIndex = 1
OnClick = tbSendClick
end
object tbDisconnected: TToolButton
Left = 110
Top = 0
Caption = '¶Ï¿ª'
Enabled = False
ImageIndex = 3
OnClick = tbDisconnectedClick
end
object tbClose: TToolButton
Left = 165
Top = 0
Caption = 'Í˳ö'
ImageIndex = 2
OnClick = tbCloseClick
end
end
end
object Edit1: TEdit
Left = 0
Top = 184
Width = 321
Height = 21
TabOrder = 1
Text = 'Îʺò'
end
object Memo1: TMemo
Left = 0
Top = 30
Width = 402
Height = 147
Align = alTop
TabOrder = 2
end
object StatusBar: TStatusBar
Left = 0
Top = 208
Width = 402
Height = 22
Panels = <
item
Width = 50
end>
SimplePanel = False
end
object btnSend: TBitBtn
Left = 336
Top = 183
Width = 60
Height = 22
Caption = '·¢ËÍ'
Enabled = False
TabOrder = 4
OnClick = tbSendClick
end
object ClientSocket: TClientSocket
Active = False
ClientType = ctNonBlocking
Port = 1025
OnConnecting = ClientSocketConnecting
OnConnect = ClientSocketConnect
OnDisconnect = ClientSocketDisconnect
OnRead = ClientSocketRead
OnError = ClientSocketError
Left = 320
end
end
248.9M / 12-08
RTS¼´Ê±Õ½ÂÔ
ÏÂÔØ
248.9M / 12-08
RTS¼´Ê±Õ½ÂÔ
ÏÂÔØ
253.4M / 12-08
RPG½ÇÉ«°çÑÝ
ÏÂÔØ
ÆÞÖÐÃÛ3È«cg´æµµ
ÓÎÏ·¹¤¾ß / 28KB
ÏÂÔØ
1
csgo¿Õ¸ñ¼üÁ¬Ìø½Å±¾ÂÌÉ«Ãâ·Ñ°æ
ÓÎÏ·¹¤¾ß / 564KB
ÏÂÔØ
2
DNF9ÖÜÄêµÚÊ®Ì×Ìì¿Õʱװ²¹¶¡
ÓÎÏ·¹¤¾ß / 1.6M
ÏÂÔØ
3
Ò׿ØÍõÎĵµ¼ÓÃÜÈí¼þv2017¹Ù·½°æÂÌÉ«Ãâ·Ñ°æ
Îļþ´¦Àí / 46M
ÏÂÔØ
4
3456wg¶àѡƤ·ôv10.6¹Ù·½°æ
ÓÎÏ·¹¤¾ß / 2.2M
ÏÂÔØ
5
dnfÒ»¼üÈÎÎñÖúÊÖv0428×îÐÂÃâ·Ñ°æ
ÓÎÏ·¹¤¾ß / 863KB
ÏÂÔØ
6
adobeÇåÀí¹¤¾ß(AdobeCreativeCloudCleanerTool)V2017 ÂÌÉ«°æ
Îļþ´¦Àí / 5.9M
ÏÂÔØ
7
ÊÓÆµ¡¢Í¼Æ¬È¥Ë®Ó¡´óʦHitPaw Watermark Removerv1.2.1 ÍêÃÀ½âËø°æ
Îļþ´¦Àí / 80.4M
ÏÂÔØ
8
°®ÆÕÉúR230´òÓ¡»úÇåÁãÈí¼þºº»¯°æ
°ì¹«Ñ§Ï° / 1.8M
ÏÂÔØ
9
GTKWave(WAVÎļþ²¨Ðβ쿴¹¤¾ß)v3.3.66 ¹Ù·½°æ
Îļþ´¦Àí / 4.4M
ÏÂÔØ
10
140.5M / 09-05
Á¢¼´ÏÂÔØ
76.4M / 03-25
Á¢¼´ÏÂÔØ
55M / 06-05
Á¢¼´ÏÂÔØ
88.7M / 04-13
Á¢¼´ÏÂÔØ
900.9M / 03-02
Á¢¼´ÏÂÔØ
96.2M / 07-06
Á¢¼´ÏÂÔØ
311.2M / 07-06
Á¢¼´ÏÂÔØ
335M / 07-06
Á¢¼´ÏÂÔØ
ǰ³ÌËÆ½õ(Excellent Expectations)
200M / 07-06
Á¢¼´ÏÂÔØ
413.8M / 07-06
Á¢¼´ÏÂÔØ
x8ɳÏ䰲׿Ãâ·Ñ°æ2023¹Ù·½×îаæ
480.3M / 01-03
Á¢¼´ÏÂÔØ
768.9M / 08-19
Á¢¼´ÏÂÔØ
165.4M / 09-05
Á¢¼´ÏÂÔØ
131.8M / 04-13
Á¢¼´ÏÂÔØ
195.6M / 03-03
Á¢¼´ÏÂÔØ
45.6M / 09-08
Á¢¼´ÏÂÔØ
665.2M / 07-06
Á¢¼´ÏÂÔØ
2.84G / 07-06
Á¢¼´ÏÂÔØ
93M / 07-06
Á¢¼´ÏÂÔØ
338.3M / 07-06
Á¢¼´ÏÂÔØ
959.8M / 12-24
Á¢¼´ÏÂÔØ 312M / 07-30
Á¢¼´ÏÂÔØ 1.38G / 07-26
Á¢¼´ÏÂÔØ DZͧΰΰÃÔÖ²Îï´óÕ½½©Ê¬ÔÓ½»°æµçÄÔ°æ
109.8M / 06-03
Á¢¼´ÏÂÔØ 142M / 01-08
Á¢¼´ÏÂÔØ 1.2M / 11-23
Á¢¼´ÏÂÔØ 548.8M / 04-13
Á¢¼´ÏÂÔØ 1.6M / 04-13
Á¢¼´ÏÂÔØ 1.48G / 03-18
Á¢¼´ÏÂÔØ 646.6M / 03-03
Á¢¼´ÏÂÔØ 401.9M / 01-06
Á¢¼´ÏÂÔØ 1.89G / 12-19
Á¢¼´ÏÂÔØ 110.5M / 09-05
Á¢¼´ÏÂÔØ 33.4M / 09-05
Á¢¼´ÏÂÔØ 60M / 04-29
Á¢¼´ÏÂÔØ 254M / 04-25
Á¢¼´ÏÂÔØ 659M / 04-23
Á¢¼´ÏÂÔØ up¶Ôսƽ̨ºÐ×Ó¹Ù·½ÏÂÔØ2023×îаæ
253.4M / 12-08
Á¢¼´ÏÂÔØ 253M / 12-08
Á¢¼´ÏÂÔØ 1.19G / 11-16
Á¢¼´ÏÂÔØ 118.2M / 01-06
Á¢¼´ÏÂÔØ 488.3M / 06-04
Á¢¼´ÏÂÔØ 369M / 09-22
Á¢¼´ÏÂÔØ 181.5M / 09-22
Á¢¼´ÏÂÔØ 201.2M / 09-05
Á¢¼´ÏÂÔØ 248.9M / 12-08
Á¢¼´ÏÂÔØ 248.9M / 12-08
Á¢¼´ÏÂÔØ 100.6M / 03-06
Á¢¼´ÏÂÔØ 148.9M / 03-06
Á¢¼´ÏÂÔØ 1.12G / 07-06
Á¢¼´ÏÂÔØ 126.7M / 02-04
Á¢¼´ÏÂÔØ 1.76G / 09-22
Á¢¼´ÏÂÔØ 1.92G / 04-17
Á¢¼´ÏÂÔØ 201.5M / 04-13
Á¢¼´ÏÂÔØ 7.31G / 07-01
Á¢¼´ÏÂÔØ 94.3M / 07-06
Á¢¼´ÏÂÔØ 2.48G / 07-06
Á¢¼´ÏÂÔØ 7.63G / 07-06
Á¢¼´ÏÂÔØ 1M / 07-06
Á¢¼´ÏÂÔØ 778.1M / 07-06
Á¢¼´ÏÂÔØ 1.40G / 12-19
Á¢¼´ÏÂÔØ 72M / 07-06
Á¢¼´ÏÂÔØ 548.7M / 07-06
Á¢¼´ÏÂÔØ 1.00G / 07-06
Á¢¼´ÏÂÔØ 9.13G / 07-06
Á¢¼´ÏÂÔØ 126.2M / 07-06
Á¢¼´ÏÂÔØ 72M / 07-06
Á¢¼´ÏÂÔØ 105.1M / 07-06
Á¢¼´ÏÂÔØ 132M / 07-06
Á¢¼´ÏÂÔØ 132M / 07-06
Á¢¼´ÏÂÔØ bonbonjump°²×¿¹Ù·½ÏÂÔØ2023×îаæ
13.4M / 01-03
Á¢¼´ÏÂÔØ 293.0M / 09-05
Á¢¼´ÏÂÔØ 1.22G / 07-06
Á¢¼´ÏÂÔØ 20.53G / 07-06
Á¢¼´ÏÂÔØ 229.9M / 07-06
Á¢¼´ÏÂÔØ 3.70G / 07-06
Á¢¼´ÏÂÔØ 904.0M / 07-06
Á¢¼´ÏÂÔØ 15.84G / 07-06
Á¢¼´ÏÂÔØ 45.50G / 07-06
Á¢¼´ÏÂÔØ 1.02G / 07-06
Á¢¼´ÏÂÔØ Copyright 2010-2025 µ¥»úÓÎÏ·ÏÂÔØ (R) °æÈ¨ËùÓÐ ·ÉÏèÏÂÔØËùÓÐÓÎÏ·¼°Èí¼þÏÂÔØ×ÊÔ´À´Ô´»¥ÁªÍø£¬²¢ÓÉÍøÓÑÉÏ´«·ÖÏí©§¡£ÈçÓÐÇÖȨ©§£¬ÇëÀ´µçÀ´º¯¸æÖ®¡£
·ÉÏèÖҸ棺µÖÖÆ²»Á¼É«Çé©§¡¢·´¶¯©§¡¢±©Á¦ÓÎÏ· ºÏÀí°²ÅÅÓÎϷʱ¼ä ÏíÊܽ¡¿µÉú»î ¶õ¹«Íø°²±¸£º42011102003115ºÅ ¡¾¶õICP±¸17000818ºÅ-1¡¿