C++Builder中用socketapi来编写网络通讯程序(一)
来源:优易学  2011-11-24 18:34:17   【优易学:中国教育考试门户网】   资料下载   IT书店

  Socket api Client:

  #ifndef UDPClientH

  #define UDPClientH

  #include

  #include

  #include

  #include

  #include

  #include "CCEdit.h"

  #define WM_SOCK WM_USER+100

  class TLANForm : public TForm

  {

  __published: // IDE-managed Components

  TEdit *Port;

  TLabel *Label1;

  TLabel *Label2;

  TComboBox *Prot;

  TButton *Button1;

  TLabel *Label3;

  TEdit *Addr;

  TCCEdit *TxtEdit;

  void __fastcall FormCreate(TObject *Sender);

  void __fastcall Button1Click(TObject *Sender);

  void __fastcall FormDestroy(TObject *Sender);

  private: // User declarations

  void __fastcall OnRecv(TMessage &Message);

  public:  // User declarations

  __fastcall TLANForm(TComponent* Owner);

  BEGIN_MESSAGE_MAP

  VCL_MESSAGE_HANDLER(WM_SOCK,TMessage,OnRecv);

  END_MESSAGE_MAP(TForm);

  };

  extern PACKAGE TLANForm *LANForm;

  #endif

  .cpp File

  #include

  #pragma hdrstop

  #include "UDPClient.h"

  #include "WinSock.h"

  #pragma package(smart_init)

  #pragma link "CCEdit"

  #pragma resource "*.dfm"

  TLANForm *LANForm;

  enum PROTO {TCP=0,UDP=1};

  SOCKET m_Socket=INVALID_SOCKET;

  PROTO m_Protocol=TCP;

  __fastcall TLANForm::TLANForm(TComponent* Owner)

  : TForm(Owner)

  {

  }

  void __fastcall TLANForm::FormCreate(TObject *Sender)

  {

  ::SendMessage(Prot->Handle,CB_SETCURSEL,0,0);

  }

  void __fastcall TLANForm::OnRecv(TMessage &Message)

  {

  char buf[4096];

  int nLen;

  struct sockaddr_in from;

  int nLength=sizeof(struct sockaddr_in);

  switch(WSAGETSELECTEVENT(Message.LParam))

  {

  case FD_READ:

  switch(m_Protocol)

  {

  case TCP:

  nLen=recv(m_Socket,buf,4096,0);

  if(nLen>0){

  buf[nLen]='\0';

  TxtEdit->Text="Received Length:"+String(nLen)+"\r\n"+StrPas(buf);

  }

[1] [2] [3] [4] [5] 下一页

责任编辑:小草

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训