User: alciro    User
 Original    Translate to:  Deutsch  English  Français  中文  
 

Programación en C++ Builder

 数组 (数组)
 指针
3. 例如在C + +类
8. AnsiString类型类的方法
 C + +项目
 包,分发的应用程序,无需安装
 交换或冒泡排序
 String.h 字符串函数

12.1. 例如TCP / IP协议聊天

聊天表套接字示例TCP / IP协议

注意事项:

建立有效的通讯端口属性ServerSocket的ClientSocket“ - >端口,1024。

添加一个Panel控件StatusBar1中 属性- >“面板- >”添加新。

main.cpp中

 //------------------------------------------------ ---------------------------
#包括 
的#pragma hdrstop

#包括“main.h”
//------------------------------------------------ ---------------------------
的#pragma链接“ScktComp”
资源的#pragma“*. DFM的”
TChatForm * ChatForm;
//------------------------------------------------ ---------------------------
TChatForm __fastcall::TChatForm(TComponent *业主):TForm(业主)
{
}
//------------------------------------------------ ---------------------------
/ /启用Socket服务器,并指定聆听模式
//------------------------------------------------ ---------------------------
无效__fastcall TChatForm:CheckBoxListenClick(TObject *发件人)
{
  / / CheckBoxList ->选中= CheckBoxList ->检查!;
  如果(CheckBoxList ->选中){
     ClientSocket ->有效=虚假的;
     ServerSocket的->有效=真;
     StatusBar1中->面板->产品[0] - >“文本=”听...";
  否则{}
     如果(ServerSocket的-> Active)的{
        ServerSocket的->有效=虚假的;
     }
     StatusBar1中->面板->产品[0] - >“文本=”“;
  }
}
//------------------------------------------------ ---------------------------
/ /连接到指定的主机
//------------------------------------------------ ---------------------------
无效__fastcall TChatForm:ConnectClick(TObject *发件人)
{
  / /如果连接处于活动状态,它必须建立新之前关闭
  如果(ClientSocket -> Active)的{
      ClientSocket ->有效=虚假的;
  }
  / /连接到服务器
  如果(InputQuery(“计算机连接到”,“地址名称:”,服务器)){/ /要求服务器的IP
     如果(Server.Length()“0){
        ClientSocket ->“主机=服务器; / /指定主机的IP
        ClientSocket ->有效=真正的,/ /连接到服务器
        / / CheckBoxList ->选中= 0; / /关闭服务器,离开聆听模式
        / /如果你停止服务器,你不能让一个连接到localhost
     }
  }
}
//------------------------------------------------ ---------------------------
/ /关闭并退出通信
//------------------------------------------------ ---------------------------
无效__fastcall TChatForm:ExitClick(TObject *发件人)
{
  ServerSocket的->“关闭(); / /关闭套接字服务器
  ClientSocket ->“关闭()/ /关闭套接字客户端
  关闭()/ /出口程序
}
//------------------------------------------------ ---------------------------
/ /发送数据
//------------------------------------------------ ---------------------------
无效__fastcall TChatForm:Memo1KeyDown(TObject *发件人,Word和重点,TShiftState移位)
{
  如果(关键== VK_RETURN){/ /如果按下回车
     / /如果我们作为一个服务器的行为,客户端已经连接到我们
     如果(IsServer){
         / /发送当前行
         ServerSocket的->的Socket ->“连接[0] - >”sendtext(Memo1 ->通信线路的>“字符串[Memo1 ->线->计数 - 1]);
     }
     / /如果我们作为一个客户端的行为,您连接到服务器
     否则{
         / /发送当前行
         ClientSocket ->的Socket -> sendtext(Memo1 ->通信线路的>“字符串[Memo1 ->线->数-1]);
     }
  }
}
//------------------------------------------------ ---------------------------
/ /当启动该程序
//------------------------------------------------ ---------------------------
无效__fastcall TChatForm:FormCreate(TObject *发件人)
{
  CheckBoxList ->选中=真正的,/ /启用Socket和进入聆听模式
}
//------------------------------------------------ ---------------------------
/ /当连接
//------------------------------------------------ ---------------------------
无效__fastcall TChatForm:ClientSocketConnect(TObject *发件人,TCustomWinSocket *座)
{
  StatusBar1中->面板->产品[0] - >“文本=”连接到:“+的Socket ->远程主机;
} 

 //------------------------------------------------ ---------------------------
/ /停止或断开连接
//------------------------------------------------ ---------------------------
无效__fastcall TChatForm:DisconnectClick(TObject *发件人)
{
  ClientSocket ->有源= 0; / /关闭连接到服务器
  ServerSocket的->有效=真正的,/ /允许,进入ServerSocket的聆听模式
  StatusBar1中->面板->产品[0] - >“文本=”听...";
}
//------------------------------------------------ ---------------------------
/ /客户端套接字时发生应该阅读的套接字连接。
//------------------------------------------------ ---------------------------
无效__fastcall TChatForm:ClientSocketRead(TObject *发件人,TCustomWinSocket *座)
{
  / /当服务器发送数据到这个系数和进程
  Memo2 ->通信线路的>“添加(插座-> ReceiveText())/ /添加数据到内存接待
}
//------------------------------------------------ ---------------------------
/ /服务器套接字时发生应改为从客户端套接字的信息。
//------------------------------------------------ ---------------------------
无效__fastcall TChatForm:ServerSocketClientRead(TObject *发件人,TCustomWinSocket *座)
{
  / /当客户端发送数据到服务器,这一过程有
  Memo2 ->通信线路的>“添加(插座-> ReceiveText())/ /添加数据到内存接待
}
//------------------------------------------------ ---------------------------
/ /它出现后立即接受客户端套接字连接到一个服务器上的插座。
//------------------------------------------------ ---------------------------
无效__fastcall TChatForm:ServerSocketAccept(TObject *发件人,TCustomWinSocket *座)
{
  IsServer =真正的,/ /作为服务器
  StatusBar1中->面板->产品[0] - >“文本=”连接到:“+的Socket -> RemoteAddress;
}
//------------------------------------------------ ---------------------------
/ /当一个完整的客户端套接字连接的服务器套接字接受的发生。
//------------------------------------------------ ---------------------------
无效__fastcall TChatForm:ServerSocketClientConnect(TObject *发件人,TCustomWinSocket *座)
{
  Memo2 ->通信线路的>“清除(); / /清理数据备忘录
}
//------------------------------------------------ ---------------------------
/ /它发生之前关闭的客户端套接字连接到服务器。
//------------------------------------------------ ---------------------------
无效__fastcall TChatForm:ClientSocketDisconnect(TObject *发件人,TCustomWinSocket *座)
{
  / / CheckBoxList ->选中=真正的,/ /启用Socket和进入聆听模式
  / /只有当它是时,作为一个客户端代理服务器的
}
//------------------------------------------------ ---------------------------
/ /当socket连接失败,使用,或关闭连接。
//------------------------------------------------ ---------------------------
无效__fastcall TChatForm:ClientSocketError(TObject *发件人,TCustomWinSocket *插座,TErrorEvent ErrorEvent,诠释及错误码)
{
  Memo2 ->通信线路的>“添加(”无法连接到:“+服务器);
  错误码= 0;
}
//------------------------------------------------ ---------------------------
/ /时发生到客户端套接字连接已关闭。
//------------------------------------------------ ---------------------------
无效__fastcall TChatForm:ServerSocketClientDisconnect(TObject *发件人,TCustomWinSocket *座)
{
  StatusBar1中->面板->产品[0] - >“文本=”听...";
} 

main.h

 //------------------------------------------------ --------------------------- 
#IFNDEF的mainha
#定义mainha
//------------------------------------------------ ---------------------------
#包括<Classes.hpp>
#包括<Controls.hpp>
#包括<StdCtrls.hpp>
#包括<Forms.hpp>
#包括“ScktComp.hpp”
#包括<Buttons.hpp>
#包括<ComCtrls.hpp>
#包括<ExtCtrls.hpp>
#包括<Menus.hpp>
//------------------------------------------------ ---------------------------
TChatForm类:public TForm
{
__published:/ / IDE的管理组件
TStatusBar * StatusBar1中;
TPanel * Panel1的;
TMemo * Memo1;
TMemo * Memo2;
TServerSocket * ServerSocket的;
TClientSocket * ClientSocket;
TButton的*连接;
TCheckBox * CheckBoxList;
TButton的*断开;
TButton的*退出;
无效__fastcall Memo1KeyDown(TObject *发件人,Word和重点,
TShiftState转移);
无效__fastcall FormCreate(TObject *发件人);
无效__fastcall ClientSocketConnect(TObject *发件人,
TCustomWinSocket *座);
无效__fastcall ClientSocketDisconnect(TObject *发件人,
TCustomWinSocket *座);
无效__fastcall ClientSocketRead(TObject *发件人,
TCustomWinSocket *座);
无效__fastcall ServerSocketClientRead(TObject *发件人,
TCustomWinSocket *座);
无效ServerSocketAccept(TObject *发件人__fastcall,
TCustomWinSocket *座);
无效__fastcall ServerSocketClientConnect(TObject *发件人,
TCustomWinSocket *座);
无效__fastcall ClientSocketError(TObject *发件人,
TCustomWinSocket *插座,TErrorEvent ErrorEvent,诠释及错误码);
无效__fastcall ServerSocketClientDisconnect(TObject *发件人,
TCustomWinSocket *座);
无效__fastcall CheckBoxListenClick(TObject *发件人);
无效__fastcall ConnectClick(TObject *发件人);
无效__fastcall DisconnectClick(TObject *发件人);
无效__fastcall ExitClick(TObject *发件人);
私人:/ /用户声明
市民:/ /用户声明
布尔IsServer / /作为服务器的行为
服务器字符串/ / IP连接到服务器
__fastcall TChatForm(TComponent *拥有者);
};

//------------------------------------------------ ---------------------------
外部TChatForm * ChatForm;
//------------------------------------------------ ---------------------------
#Endif

Loading
copyright © 2007-2024  www.alciro.org  All rights reserved.         
Share |