//在建立连接后,双方就可以在Edit1中输入谈话内容开始进
//行交谈了,按下Enter键后,将所在行的文本发送出去
void __fastcall TForm1::Edit1KeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
AnsiString Data;
if(Key==VK_RETURN)
{if (Edit2-$#@62;Text!="") //在没有选择发送的主机名时不能进行发送操作
{if(IsServer) //服务器端发出的数据
{Data= "["+TimeToStr(Now())+"]:("+ServerSocket1-$#@62;Socket-$#@62;LocalHost+")对"+"("+Edit2-$#@62;Text+")"+"说:"+Edit1-$#@62;Text;
ServerSocket1-$#@62;Socket-$#@62;Connections[TreeView1-$#@62;Selected-$#@62;Index]-$#@62;SendText(Data);
Memo1-$#@62;Lines-$#@62;Add(Data);
Edit1-$#@62;Text="";}
else //客户端发出的数据
{ Data="["+TimeToStr(Now())+"]:("+ClientSocket1-$#@62;Socket-$#@62;LocalHost+")对"+"("+Edit2-$#@62;Text
+")"+"说:"+Edit1-$#@62;Text;
ClientSocket1-$#@62;Socket-$#@62;SendText(Data);
Memo1-$#@62;Lines-$#@62;Add(Data);
Edit1-$#@62;Text="";}
}
else
ShowMessage("错误!!! 没有选择发送的主机名");
}
}
//---------------------------------------------------------------------------
//在网络中搜索服务器端时产生的事件
void __fastcall TForm1::ClientSocket1Lookup(TObject *Sender,
TCustomWinSocket *Socket)
{ //定义mouse的类型
Form1-$#@62;Cursor=crHourGlass ;
Edit1-$#@62;Cursor=crHourGlass;
Memo1-$#@62;Cursor=crHourGlass;
}
//选择发向数据的主机名
void __fastcall TForm1::TreeView1Change(TObject *Sender, TTreeNode *Node)
{
Edit2-$#@62;Text=TreeView1-$#@62;Selected-$#@62;TreeView-$#@62;Selected-$#@62;Text;
StatusBar1-$#@62;SimpleText="连接到:"+TreeView1-$#@62;Selected-$#@62;TreeView-$#@62;Selected-$#@62;Text;
} //监听
void __fastcall TForm1::BtnlistenClick(TObject *Sender)
{
ClientSocket1-$#@62;Active=false;
ServerSocket1-$#@62;Active=true;
StatusBar1-$#@62;SimpleText="正在监听...";
Form1-$#@62;Caption =Form1-$#@62;Caption+"--服务器端";
Btnlisten-$#@62;Enabled=false;
Btnconnect-$#@62;Enabled=false;
}
//连接
void __fastcall TForm1::BtnconnectClick(TObject *Sender)
{
if(InputQuery("连接到服务器","输入服务器地址:",Server))
{
if(Server.Length() $#@62;0){
ClientSocket1-$#@62;Host=Server; //确定服务器的主机名
ClientSocket1-$#@62;Active=true;
Btnlisten-$#@62;Enabled=false;
Btnconnect-$#@62;Enabled=false;
Btndisconnect-$#@62;Enabled=true;
Form1-$#@62;Caption =Form1-$#@62;Caption+"--客户端";}
}
}
//断开
void __fastcall TForm1::BtndisconnectClick(TObject *Sender)
{
//按下断开
ClientSocket1-$#@62;Close();
}
//---------------------------------------------------------------------------
//退出
void __fastcall TForm1::BtnExitClick(TObject *Sender)
{
ClientSocket1-$#@62;Close();
ServerSocket1-$#@62;Close();
Form1-$#@62;Close();
}
//编写完程序代码后,就要对源程序进行编译了,编译方法如下:
1.在菜单 project \ options 下,选择Packages 页,去掉Build with runtime packages 项的勾, 然后选择Linker 页,去掉 Use dynamic RTL 的勾,然后按“确定”按钮。
2.在菜单 project \ options 下,选择 Compiler 页,按下 Release 按钮,然后按“确定”按钮。
3.在菜单 Run \ Run (或F9) 进行编译就行。 用这种方法编译的可执行文件容量比较小, 而且可以在没有安装C++的系统中运行。在运行时 可单机也可多机操作,但必须要有一个主机打开程序的“监听”,其它客户机进行连接就行了。 快快来下载,编写自己的聊天程序吧!正文:http://www.qqread.com/bcb/d322282500.html
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
相关专题
- 数字小键盘指法练习 (5501次浏览)
- 用WinSock控件编写网络聊天器 (2638次浏览)
- C++Builder注册表编程实例详解 (1568次浏览)
- C++ Builder VCL库函数简介 (1348次浏览)
- 在 C++ Builder中利用串行通信控件编程 (1213次浏览)
- C++ Builder中消息处理过程及应用 (1038次浏览)
- 将指定目录的结构装入TreeView中 (990次浏览)
- 用C++ Builder3 制作记事本 (818次浏览)
- Windows多线程间同步事件的控制方法 (787次浏览)
- C++Builder开发Web应用程序 (746次浏览)



