当前位置: 首页 > 图文教程 > 认证考试 > 计算机等级考试 > 控制台聊天程序服务器端代码

计算机等级考试
全国计算机等级考试调整方案
2006年4月全国计算机等级考试二级C笔试答案
全国计算机等级考试二级C语言典型题解析
全国计算机等级考试二级C语言入门:数组
参加国家计算机等级考试该如何学习C语言
全国计算机等级考试C语言之深入理解C语言指针
计算机等级考试二级C语言之指针、数组和函数
2007年12月全国计算机职业技能考试安排
2008四月全国计算机等级考试将有重大调整
2007年9月全国计算机等级考试二级VB笔试试卷
2007年9月全国计算机等级考试二级C语言笔试试卷
2007年9月全国计算机等级考试三级网络技术笔试试卷
2007年9月全国计算机等级考试二级VFP笔试试卷
2007年9月全国计算机等级考试四级参考答案
2007年9月全国计算机等级考试二级java程序设计参考答案
2007年9月全国计算机等级考试access数据库程序设计参考答案
全国计算机等级考试考试大纲
计算机等级考试二级应试技巧
2009年度计算机应用能力考试的考试模块调整
Word软件文档结构图制作技巧

计算机等级考试 中的 控制台聊天程序服务器端代码


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-04   浏览: 436 ::
收藏到网摘: n/a

  今天在网上找到了个控制台聊天程序实例,感觉不错,稍微做些修改,以作收藏之用。

  服务器端程序代码:

  view plaincopy to clipboardprint?

  // 2009-06-28

  #pragma comment(lib,"ws2_32.lib")

  #include

  #include

  #include

  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<

  }

  }

  }

  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"<

  }

  if(listen(sockSrv,5)==SOCKET_ERROR)

  {

  cout<<"listen error"<

  }

  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"<

  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<

  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;

  }

  // 2009-06-28

  #pragma comment(lib,"ws2_32.lib")

  #include

  #include

  #include

  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<

  }

  }

  }

  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"<

  }

  if(listen(sockSrv,5)==SOCKET_ERROR)

  {

  cout<<"listen error"<

  }

  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"<

  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<

  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;

  }

  客户端程序代码:

  view plaincopy to clipboardprint?

  // 2009-06-28

  #pragma comment(lib,"ws2_32.lib")

  #include

  #include

  #include

  using namespace std;

  string strCurMsg="";

  void recvProc(SOCKET sockClient)

  {

  char msgRcv[100]={0};

  while(true)

  {

  if(SOCKET_ERROR==recv(sockClient,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<

  }

  }

  }

  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 sockClient=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);

  SOCKADDR_IN addrSrv;

  addrSrv.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");

  addrSrv.sin_family=AF_INET;

  addrSrv.sin_port=htons(5000);

  if (connect(sockClient,(sockaddr*)&addrSrv,sizeof(sockaddr)) == SOCKET_ERROR)

  {

  cout<<"connected failed\n";

  return 1;

  }

  else

  {

  cout<<"connect OK\n";

  }

  CreateThread(NULL,0,

  (LPTHREAD_START_ROUTINE)recvProc,(void*)sockClient,

  0,NULL);

  while(true)

  {

  char buf[100]={0};

  strCurMsg+="input: ";

  system("cls");

  cout<

  cin.getline(buf,100);

  strCurMsg.erase(strCurMsg.end()-7,strCurMsg.end());

  strCurMsg+="You said:";

  strCurMsg+=buf;

  strCurMsg+=’\n’;

  send(sockClient,buf,sizeof(buf),0);

  }

  closesocket(sockClient);

  WSACleanup();

  return 0;

  }

  // 2009-06-28

  #pragma comment(lib,"ws2_32.lib")

  #include

  #include

  #include

  using namespace std;

  string strCurMsg="";

  void recvProc(SOCKET sockClient)

  {

  char msgRcv[100]={0};

  while(true)

  {

  if(SOCKET_ERROR==recv(sockClient,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<

  }

  }

  }

  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 sockClient=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);

  SOCKADDR_IN addrSrv;

  addrSrv.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");

  addrSrv.sin_family=AF_INET;

  addrSrv.sin_port=htons(5000);

  if (connect(sockClient,(sockaddr*)&addrSrv,sizeof(sockaddr)) == SOCKET_ERROR)

  {

  cout<<"connected failed\n";

  return 1;

  }

  else

  {

  cout<<"connect OK\n";

  }

  CreateThread(NULL,0,

  (LPTHREAD_START_ROUTINE)recvProc,(void*)sockClient,

  0,NULL);

  while(true)

  {

  char buf[100]={0};

  strCurMsg+="input: ";

  system("cls");

  cout<

  cin.getline(buf,100);

  strCurMsg.erase(strCurMsg.end()-7,strCurMsg.end());

  strCurMsg+="You said:";

  strCurMsg+=buf;

  strCurMsg+=’\n’;

  send(sockClient,buf,sizeof(buf),0);

  }

  closesocket(sockClient);

  WSACleanup();

  return 0;

  }