BCB成立基于Internet的点对点Chat[VC/C++编程]
本文“BCB成立基于Internet的点对点Chat[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
成立基于Internet的利用程序,你大概会想到复杂的WinSock编程.不过,C++ Builder3供应了新的WebBroker的Internet套件,此中的TClientSocket和TServerSocket组件封装了Windows的有关API,大大简化了WinSock编程.要通过Internet传输数据,至少需求一对Socket,一个Socket在客户端,另一个Socket在服务器端.其实TClientSocket、TServerSocket组件并非Socket对象,其属性Socket将返回各自的Socket对象.TClientSocket用来处理客户端到服务器端之间的socket衔接,TServerSocket用来处来由客户端发来的socket衔接,一旦客户端和服务器端都接通了socket,客户端和服务器端便可以彼此通信了.
成立一新项目,成立利用程序的用户界面:
1.将组件页切换到Internet页,放一个TServerSocket组件和一个TClientSocket组件到窗体上,这样利用程序既可以是TCP/IP服务器,也可以是TCP/IP客户.将Port属性都设为同一个值(如1000),肯定Socket之间的衔接范例为NonBlocking(非阻塞方法).
2.放两个TMemo组件到窗体上,用来辨别显示双方的说话内容,将Memo2的ReadOnly属性设为True.
3.在窗体的顶部放上一个Panel组件,在其上放三个按钮:监听(btnlisten)、衔接(btnconnect)、断开(btndisconnect),用来启动呼应的操作.
4.在窗体底部放一个StatusBar组件,将其SimplePanel属性设为True,在呼应的事件处理程序中改变状况条信息,让用户随时理解衔接状况.
翻开首文件,在窗体类的Private段增添两个私有成员: bool IsServer;String Server.双方通信时需同时运行Chat程序,IsServer用来肯定哪个Chat程序处于服务器端,Server用来存放服务器的主机名.成立窗体类的构造器以下:
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
IsServer=false;
Server="localhost";
}
这里Server被缺省设为localhost,这样程序可以在没有连入Internet的单机上举行调试.在Windows子目录下你可以找到hosts.sam文件中,在该文件中已经将本机IP地址127.0.0.1定义了主机名:localhost.
void __fastcall TForm1::FormCreate(TObject *Sender)
{
btndisconnect- >Enabled=false;
}
程序运行后,假如用户按下"监听"钮,则将该程序设为服务器端,这时应将TServerSocket的Active属性设为True,使服务器自动进入监听状况.
void __fastcall TForm1::btnlistenClick(TObject *Sender)
{
ClientSocket1- >Active=false;
ServerSocket1- >Active=true;
StatusBar1- >SimpleText="正在监听...";
btnlisten- >Enabled=false;
btnconnect- >Enabled=false;
}
当用户按下"衔接"钮后,程序会弹出一个询问框,要求用户输入要衔接的服务器的主机名,然后成立衔接.
void __fastcall TForm1::btnconnectClick(TObject *Sender)
{
if(InputQuery("衔接到服务器","输入服务器地址:",Server)){
if(Server.Length() >0){
ClientSocket1- >Host=Server;
ClientSocket1- >Active=true;
btnlisten- >Enabled=false;
btnconnect- >Enabled=false;
btndisconnect- >Enabled=true;
}
}
}
当用户提出衔接恳求后,客户端会触发OnCreate事件,程序先在状况条中显示衔接信息,然后将显示对方说话内容的Memo2清空,预备开始扳谈.
void __fastcall TForm1::ClientSocket1Connect(TObject *Sender,
TCustomWinSocket *Socket)
{
StatusBar1- >SimpleText="衔接到:"+Server;
Memo2- >Lines- >Clear();
}
以上是“BCB成立基于Internet的点对点Chat[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |