#0001 unit main;
#0002 interface
#0003 uses
#0004 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
#0005 Menus, StdCtrls, Buttons, ScktComp, ExtCtrls, ComCtrls;
#0006 type
#0007 TChatForm = class(TForm)
#0008 MainMenu1: TMainMenu;
#0009 File1: TMenuItem;
#0010 Exit1: TMenuItem;
#0011 FileConnectItem: TMenuItem;
#0012 FileListenItem: TMenuItem;
#0013 StatusBar1: TStatusBar;
#0014 Bevel1: TBevel;
#0015 Panel1: TPanel;
#0016 Memo1: TMemo;
#0017 Memo2: TMemo;
#0018 N1: TMenuItem;
#0019 SpeedButton1: TSpeedButton;
#0020 Disconnect1: TMenuItem;
#0021 ServerSocket: TServerSocket;
#0022 ClientSocket: TClientSocket;
#0023 procedure FileListenItemClick(Sender: TObject);
#0024 procedure FileConnectItemClick(Sender: TObject);
#0025 procedure Exit1Click(Sender: TObject);
#0026 procedure Memo1KeyDown(Sender: TObject; var Key: Word;
#0027 Shift: TShiftState);
#0028 procedure FormCreate(Sender: TObject);
#0029 procedure ServerSocketError(Sender: TObject; Number: Smallint;
#0030 var Description: string; Scode: Integer; const Source,
#0031 HelpFile: string; HelpContext: Integer; var CancelDisplay: Wordbool);
#0032 procedure Disconnect1Click(Sender: TObject);
#0033 procedure ClientSocketConnect(Sender: TObject;
#0034 Socket: TCustomWinSocket);
#0035 procedure ClientSocketRead(Sender: TObject; Socket: TCustomWinSocket);
#0036 procedure ServerSocketClientRead(Sender: TObject;
#0037 Socket: TCustomWinSocket);
#0038 procedure ServerSocketAccept(Sender: TObject;
#0039 Socket: TCustomWinSocket);
#0040 procedure ServerSocketClientConnect(Sender: TObject;
#0041 Socket: TCustomWinSocket);
#0042 procedure ClientSocketDisconnect(Sender: TObject;
#0043 Socket: TCustomWinSocket);
#0044 procedure ClientSocketError(Sender: TObject; Socket: TCustomWinSocket;
#0045 ErrorEvent: TErrorEvent; var ErrorCode: Integer);
#0046 procedure ServerSocketClientDisconnect(Sender: TObject;
#0047 Socket: TCustomWinSocket);
#0048 protected
#0049 IsServer: Boolean;
#0050 end;
#0051 var
#0052 ChatForm: TChatForm;
#0053 Server: String;
#0054 implementation
#0055 {$R *.DFM}
#0056 procedure TChatForm.FileListenItemClick(Sender: TObject);
#0057 begin
#0058 FileListenItem.Checked := not FileListenItem.Checked;
#0059 if FileListenItem.Checked then
#0060 begin
#0061 ClientSocket.Active := False;
#0062 ServerSocket.Active := True;
#0063 Statusbar1.Panels[0].Text := 'Listening...';
#0064 end
#0065 else
#0066 begin
#0067 if ServerSocket.Active then
#0068 ServerSocket.Active := False;
#0069 Statusbar1.Panels[0].Text := '';
#0070 end;
#0071 end;
#0072 procedure TChatForm.FileConnectItemClick(Sender: TObject);
#0073 begin
#0074 if ClientSocket.Active then ClientSocket.Active := False;
#0075 if InputQuery('Computer to connect to', 'Address Name:', Server) then
#0076 if Length(Server) > 0 then
#0077 with ClientSocket do
#0078 begin
#0079 Host := Server;
#0080 Active := True;
#0081 FileListenItem.Checked := False;
#0082 end;
#0083 end;
#0084 procedure TChatForm.Exit1Click(Sender: TObject);
#0085 begin
#0086 ServerSocket.Close;
#0087 ClientSocket.Close;
#0088 Close;
#0089 end;
#0090 procedure TChatForm.Memo1KeyDown(Sender: TObject; var Key: Word;
#0091 Shift: TShiftState);
#0092 var
#0093 CurrentLine:Integer;
#0094 begin
#0095 if Key = VK_Return then
#0096 if IsServer then
#0097 begin
#0098 CurrentLine:=memo1.Perform(EM_LINEFROMCHAR,$FFFF,0);
//调用perform函数,结合EM_LINEFROMCHAR消息
//得到当前行号;
#0099 ServerSocket.Socket.Connections[0].SendText
#0100 (Memo1.Lines[CurrentLine])
#0101 end
#0102 else
#0103 begin
#0104 CurrentLine:=memo1.Perform(EM_LINEFROMCHAR,$FFFF,0);
#0105 ClientSocket.Socket.SendText(Memo1.Lines[CurrentLine]);
#0106 end;
#0107 end;
#0108 procedure TChatForm.FormCreate(Sender: TObject);
#0109 begin
//注释掉这一句,避免绑定错误;
//FileListenItemClick(nil);
#0110 end;
#0111 procedure TChatForm.ServerSocketError(Sender: TObject; Number: Smallint;
#0112 var Description: string; Scode: Integer; const Source, HelpFile: string;
#0113 HelpContext: Integer; var CancelDisplay: Wordbool);
#0114 begin
#0115 ShowMessage(Description);
#0116 end;
#0117 procedure TChatForm.Disconnect1Click(Sender: TObject);
#0118 begin
#0119 ClientSocket.Active := False;
#0120 ServerSocket.Active := True;
#0121 Statusbar1.Panels[0].Text := 'Listening...';
#0122 end;
#0123 procedure TChatForm.ClientSocketConnect(Sender: TObject;
#0124 Socket: TCustomWinSocket);
#0125 begin
#0126 Statusbar1.Panels[0].Text := 'Connected to: ' + Socket.RemoteHost;
#0127 end;
#0128 procedure TChatForm.ClientSocketRead(Sender: TObject;
#0129 Socket: TCustomWinSocket);
#0130 begin
#0131 Memo2.Lines.Add(Socket.ReceiveText);
#0132 end;
#0133 procedure TChatForm.ServerSocketClientRead(Sender: TObject;
#0134 Socket: TCustomWinSocket);
#0135 begin
#0136 Memo2.Lines.Add(Socket.ReceiveText);
#0137 end;
#0138 procedure TChatForm.ServerSocketAccept(Sender: TObject;
#0139 Socket: TCustomWinSocket);
#0140 begin
#0141 IsServer := True;
#0142 Statusbar1.Panels[0].Text := 'Connected to: ' + Socket.RemoteAddress;
#0143 end;
#0144 procedure TChatForm.ServerSocketClientConnect(Sender: TObject;
#0145 Socket: TCustomWinSocket);
#0146 begin
#0147 Memo2.Lines.Clear;
#0148 end;
#0149 procedure TChatForm.ClientSocketDisconnect(Sender: TObject;
#0150 Socket: TCustomWinSocket);
#0151 begin
//也注释掉这一句,防止多个程序运行时,其一程序退出时
//出现多个程序争着绑定同一监听端口的情况出现;
//FileListenItemClick(nil);
#0152 end;
#0153 procedure TChatForm.ClientSocketError(Sender: TObject;
#0154 Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
#0155 var ErrorCode: Integer);
#0156 begin
#0157 Memo2.Lines.Add('Error connecting to : ' + Server);
#0158 ErrorCode := 0;
#0159 end;
#0160 procedure TChatForm.ServerSocketClientDisconnect(Sender: TObject;
#0161 Socket: TCustomWinSocket);
#0162 begin
#0163 Statusbar1.Panels[0].Text := 'Listening...';
#0164 end;
#0165 end.
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
深入Delphi6网络编程源码 (130个子文件)
Cproxytest.cfg 386B
TINY.cfg 386B
FileTrans.cfg 386B
FileTrans.cfg 386B
SimpleProxy.cfg 386B
SERVER.cfg 386B
CLIENT.cfg 386B
CHATCLI.cfg 386B
CHATSER.CFG 386B
FTPTST.cfg 386B
Cproxytest.cfg 358B
Iserver.cfg 358B
Sfilter.cpp 3KB
StdAfx.cpp 209B
main.dcu 15KB
para.dcu 4KB
main.ddp 51B
Sfilter.def 134B
main.dfm 88KB
main.dfm 88KB
pmain.dfm 14KB
pmain.dfm 14KB
FTPTST1.dfm 9KB
main.dfm 7KB
Main.dfm 6KB
Main.dfm 6KB
main.dfm 5KB
MAIN.DFM 3KB
main.dfm 2KB
main.dfm 2KB
PARA.DFM 2KB
port.dfm 2KB
HANDLE.DFM 2KB
setunit.dfm 1KB
setunit.dfm 1KB
PORT.DFM 1KB
Main.dfm 1KB
Ftptst2.dfm 490B
Sfilter.dll 1.29MB
Iserver.dll 773KB
FileTrans.dof 1KB
SimpleProxy.dof 1KB
CLIENT.dof 1KB
FileTrans.dof 1KB
Cproxytest.dof 1KB
Cproxytest.dof 1KB
CHATCLI.dof 1KB
Iserver.dof 1KB
TINY.dof 1KB
SERVER.dof 1KB
CHATSER.DOF 1KB
FTPTST.dof 1KB
TINY.DPR 3KB
chat.dpr 616B
chat.dpr 616B
Iserver.dpr 529B
SERVER.DPR 405B
CLIENT.DPR 314B
Cproxytest.dpr 303B
Cproxytest.dpr 303B
FTPTST.DPR 294B
SimpleProxy.dpr 239B
FileTrans.dpr 236B
FileTrans.dpr 236B
CHATCLI.DPR 224B
CHATSER.DPR 191B
Sfilter.dsp 4KB
Sfilter.dsw 537B
main.dti 730B
CLIENT.exe 534KB
SERVER.exe 533KB
Cproxytest.exe 527KB
Cproxytest.exe 527KB
FTPTST.exe 484KB
CHATCLI.exe 473KB
chat.exe 447KB
chat.exe 447KB
CHATSER.exe 437KB
FileTrans.exe 409KB
FileTrans.exe 406KB
SimpleProxy.exe 386KB
TINY.exe 51KB
Sfilter.h 1KB
StdAfx.h 669B
Resource.h 316B
2ccc.com.nfo 731B
xBase.pas 74KB
SrvMain.pas 55KB
FTPTST1.PAS 25KB
main.pas 11KB
pmain.pas 11KB
MAIN.PAS 11KB
Main.pas 11KB
pmain.pas 10KB
main.pas 6KB
Main.pas 6KB
main.pas 5KB
Main.pas 5KB
main.pas 5KB
wwwexethread.pas 5KB
共 130 条
- 1
- 2
资源评论
- 海不扬波2012-11-15太老了,版本低
boyang03
- 粉丝: 0
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- SRS-CentOS7-x86-64-5.0-r1.zip
- 全文检索使用ElasticSearch实现全文检索的详细说明和实践探索
- 基于matlab主成分分析图像压缩重建系统代码14
- C语言《基于AT89C52单片机搭建的PID直流电机控制程序,主要用于Proteus电路仿真》+源代码
- C++《基于规划和汽车动力学的自动驾驶项目仿真(基于ROS的自动驾驶项目仿真,使用DWA路径规划算法和双PID控制器)》+源代码
- vos3000客户端2.1.7.03、2.1.8.05、2.1.9.07
- c++《用于船舶控制方法研究的3D船舶运动仿真软件》+源代码
- globalmapper24
- Python 小游戏 (贪吃蛇、五子棋、扫雷、俄罗斯方块)源码.zip
- Map data that can be used for 2D raster map path planning
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功