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

 

 break;

  case UDP:

  nLen=recvfrom(m_Socket,buf,4096,0,(struct sockaddr*)&from,&nLength);

  if(nLen>0){

  buf[nLen]='\0';

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

  }

  break;

  }

  break;

  case FD_CLOSE:

  closesocket(m_Socket);

  break;

  }

  }

  void __fastcall TLANForm::Button1Click(TObject *Sender)

  {

  char szTmp[256],buf[4096];

  int nSize=0;

  UINT m_Port;

  AnsiString addr;

  addr=Addr->Text.Trim();

  if(addr.IsEmpty()){

  ::MessageBox(0,"Please enter the server IP!","Error",MB_OK+MB_ICONERROR);

  return;

  }

  unsigned long nAddr=inet_addr(addr.c_str());

  if(nAddr==INADDR_NONE){

  ::MessageBox(0,"Bad Internet IP!","Error",MB_OK+MB_ICONERROR);

  return;}

  try

  {

  m_Port=Port->Text.ToInt();

  }

  catch(Exception &e)

  {

  ::MessageBox(0,e.Message.c_str(),"Error",MB_OK+MB_ICONERROR);

  return;

  }

  switch(Prot->ItemIndex)

  {

  case 0:

  m_Protocol=TCP;

  break;

  case 1:

  m_Protocol=UDP;

  break;

  }

  if(TxtEdit->Text.IsEmpty()){

  ::MessageBox(0,"Please enter the text you want to send!","Error",MB_OK+MB_ICONERROR);

  return;}

  //Initialize Winsocket

  WSAData wsaData;

  ::ZeroMemory(&wsaData,sizeof(WSAData));

  WORD version=MAKEWORD(2,0);

  if(::WSAStartup(version,&wsaData)){

  sprintf(szTmp,"Failed to initial winsock enviroment!,error no:%d",::WSAGetLastError());

  return;}

  //Obtain the active connection

  char ComputerName[255];

  gethostname(ComputerName,255);

  struct hostent* he=gethostbyname(ComputerName);

  if(!he){

  sprintf(szTmp,"Failed to get information to host!","Error",MB_OK+MB_ICONERROR);

  ::WSACleanup();

  return;

  }

  //create new socket

  m_Socket=INVALID_SOCKET;

  switch(m_Protocol)

  {

  case TCP:

  m_Socket=socket(AF_INET,SOCK_STREAM,0);

  break;

  case UDP:

  m_Socket=socket(AF_INET,SOCK_DGRAM,0);

  break;

  }

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

责任编辑:小草

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