TCPIPTCP群聊的实现.doc

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
TCP/IP——基于TCP通信的群聊 级 学 号 姓 名 计科1101班 0304110125 段广花 计科1101班 0304110106 冯小龙 计科1101班 0304110117 杨凯军 一、目的 通信方式多人 二、 1. 群聊流程 2. 事件对象I/O管理、VS2010上创建C++控制台应用程序Server(服务器端),Send和Recv客户端); ; 修改代码。、Server部分:#includeWinsock2.h #includestdio.h #includestring.h #includeiostream //服务器端口号为5050 #define DEFAULT_PORT 5050 //接收数据缓冲区长度 #define BUFFER_LENGTH 1024 #pragma comment(lib,ws2_32.lib) using namespace std; void main() { int iPort = DEFAULT_PORT; WSADATA wsaData; SOCKET sSocket; //客户地址长度 int iLen; //发送的数据长度 int iSend; //接受的数据长度 int iRecv; //要发送给客户的信息 char send_buf[BUFFER_LENGTH]; //接收数据的缓冲区 char recv_buf[BUFFER_LENGTH]; //本地地址和客户地址 struct sockaddr_in ser, cli; struct sockaddr_in temp; //struct sockaddr_in clis[100]; char **clis; printf(----------------------\n); printf(Sercer Waiting\n); printf(----------------------\n); if(WSAStartup(MAKEWORD(2, 2), wsaData) != 0) { printf(Failed to load Winsock.\n); return; } //产生服务器端套接口 sSocket = socket(AF_INET, SOCK_DGRAM, 0); if(sSocket == INVALID_SOCKET) { printf(socket() Failed: %d\n, WSAGetLastError()); return; } ser.sin_family = AF_INET; ser.sin_port = htons(iPort); ser.sin_addr.s_addr = htonl(INADDR_ANY); temp.sin_family = AF_INET; temp.sin_port = htons(iPort); if(bind(sSocket, (LPSOCKADDR)ser, sizeof(ser)) == SOCKET_ERROR) { printf(bind() Failed: %d\n, WSAGetLastError()); return; } iLen = sizeof(cli); int i = 0; int *flag; clis = new char*[100]; flag = new int[100]; char s2[] = quit; while(1) { memset(recv_buf, 0, sizeof(recv_buf)); iRecv = recvfrom(sSocket, recv_buf, BUFFER_LENGTH, 0, (SOCKADDR*)cli, iLen); if(i1) { clis[i] = new char[strlen(inet_ntoa(cli.sin_addr))]; strcpy(clis[i],inet_ntoa(cli.sin_addr)); flag[i] = 1; if(iRecv == SOCKET_ERROR) { printf(recvfrom() Failed: %d\n, WSAGetLastError()); break; } else if(iRecv == 0) break; else { printf(Accepted client IP:[%s],port:[%d]\n, inet_ntoa(cli.sin_

您可能关注的文档

文档评论(0)

xjj2017 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档