控制台聊天程序实例 代码计算机等级考试

文章作者 100test 发表时间 2009:07:07 23:25:37
来源 100Test.Com百考试题网


  今天在网上找到了个控制台聊天程序实例,感觉不错,稍微做些修改,以作收藏之用。
  服务器端程序代码:
  view plaincopy to clipboardprint?
  // 2009-06-28
  #pragma comment(lib,"ws2_32.lib")
  #include<.winsock2.h>.
  #include<.iostream>.
  #include<.string>.
  using namespace std.
  string strCurMsg="".
  void recvProc(SOCKET sockConnect)
  {
  char msgRcv[100]={0}.
  while(true)
  {
  if(SOCKET_ERROR==recv(sockConnect,msgRcv,sizeof(msgRcv),0))
  {
  cout<.<."\nHe is leaving".
  return.
  }
  if(msgRcv[0]!=’\0’)
  {
  strCurMsg.erase(strCurMsg.end()-7,strCurMsg.end()).
  strCurMsg ="He said: ".
  strCurMsg =msgRcv.
  strCurMsg =’\n’.
  strCurMsg ="input: ".
  system("cls").
  cout<.<.strCurMsg.
  }
  }
  }
  int main(int argc, char* argv[])
  {
  WORD wVersionRequested.
  WSADATA wsaData.
  int err.
  wVersionRequested = MAKEWORD( 1, 1 ).
  err = WSAStartup( wVersionRequested, &.wsaData ).
  if ( err != 0 ) {
  return 1.
  }
  if ( LOBYTE( wsaData.wVersion ) != 1||
  HIBYTE( wsaData.wVersion ) != 1) {
  WSACleanup( ).
  return 1.
  }
  SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP).
  sockaddr_in addrSrv.
  memset(&.addrSrv,0,sizeof(addrSrv)).
  addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY).
  addrSrv.sin_family=AF_INET.
  addrSrv.sin_port=htons(5000).
  if(bind(sockSrv,(sockaddr*)&.addrSrv,sizeof(sockaddr))==SOCKET_ERROR)
  {
  cout<.<."bind error"<.<.endl.
  }
  if(listen(sockSrv,5)==SOCKET_ERROR)
  {
  cout<.<."listen error"<.<.endl.
  }
  SOCKADDR_IN addrClient.
  int len=sizeof(sockaddr).
  while(true)
  {
  cout<.<."Waiting .....".
  SOCKET sockConnect=accept(sockSrv,(sockaddr*)&.addrClient,&.len).
  if(sockConnect==INVALID_SOCKET)
  {
  cout<.<."invalid socket"<.<.endl.
  return 0.
  }
  else
  {
  cout<.<."He is coming\n".
  }
  CreateThread(NULL,0,
  (LPTHREAD_START_ROUTINE)recvProc,(void*)sockConnect,
  0,NULL).
  while(true)
  {
  char buf[100]={0}.
  strCurMsg ="input: ".
  system("cls").
  cout<.<.strCurMsg.
  cin.getline(buf,100).
  strCurMsg.erase(strCurMsg.end()-7,strCurMsg.end()).
  strCurMsg ="You said:".
  strCurMsg =buf.
  strCurMsg =’\n’.
  send(sockConnect,buf,sizeof(buf),0).
  }
  closesocket(sockConnect).
  }
  WSACleanup().
  return 0.
  }

相关文章


c 控制台聊天程序实例 代码计算机等级考试
对话框下的直接打印和打印预览计算机等级考试
LR语法分析器程序设计计算机等级考试
C_C 多种方法获取文件大小计算机等级考试
控制台聊天程序实例 代码计算机等级考试
数值转换为Excel列标的算法计算机等级考试
C 托管程序转换为C#程序ILASM_ILDASM应用计算机等级考试
VC 6.0下搭建wxWidgets开发环境计算机等级考试
网络编程:客户机断开连接(WinSock)计算机等级考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛