精华内容
下载资源
问答
  • 即时通信软件
    千次阅读
    2022-04-25 23:45:00

    题目

    由于本学期上了网络编程课程,老师要求写使用Socke实现网络编程。于是参考 C++多线程实现即时通信软件 写出了简单版本的没有界面的即时通信软件。

    软件:VS

    直接上代码,需要讲解原理的,可以参考 C++多线程实现即时通信软件

    服务器端

    //TcpServer_plus.exe
    
    #include<stdio.h>
    #include <Winsock2.h>
    #include<WS2tcpip.h>
    #pragma comment(lib,"ws2_32.lib")
    #include<iostream>
    using namespace std;
    #include<windows.h>
    
    SOCKADDR_IN cAddr = { 0 };
    int len = sizeof cAddr;
    SOCKET clientSocket[1001];//同时最多容纳1000人在线
    
    void chat(int n) {
    	char buff[1024];
    	int r;
    	while (1) {
    		r = recv(clientSocket[n], buff, 1023, NULL);
    		if (r > 0) {
    			buff[r] = 0;
    			//cout << inet_ntoa(cAddr.sin_addr) << "发来的消息: " << buff;
    			printf("%s发来的信息:%s\n", inet_ntop(AF_INET, (void*)&cAddr.sin_addr, buff, 1023), buff);
    		}
    	}
    }
    
    int main() {
    
    	//1.确定协议版本
    	WSADATA wsadata;
    	WSAStartup(MAKEWORD(2, 2), &wsadata);//2.2版本
    	if (LOBYTE(wsadata.wVersion) != 2 || HIBYTE(wsadata.wVersion) != 2) {
    		cout << "确认版本失败!\n" << endl;
    		return -1;
    	}
    	cout << "确认版本成功!" << endl;
    
    	//2.创建Socket
    	SOCKET serverSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);//参数:协议类型、通信载体(字节流)、ip保护方式
    	if (serverSocket == SOCKET_ERROR) {
    		cout << "创建socket失败!" << GetLastError() << endl;
    		//9.清楚版本信息
    		WSACleanup();
    		return -1;
    	}
    	cout << "socket创建成功!" << endl;
    
    	//3.创建服务器协议地址族
    	//就是一个结构体
    	SOCKADDR_IN addr = { 0 };
    	addr.sin_family = AF_INET;
    	inet_pton(AF_INET, "192.168.31.100", (void*)&addr.sin_addr.S_un.S_addr);
    	//addr.sin_addr.S_un.S_addr = inet_addr("192.168.31.100");//局域网地址
    	addr.sin_port = htons(9999);//设置端口号 小端转大端
    
    	//4.绑定
    	int r = bind(serverSocket, (struct sockaddr*)&addr, sizeof addr);
    	if (r == -1) {
    		cout << "绑定失败!" << GetLastError() << endl;
    		//8.关闭socket
    		closesocket(serverSocket);
    		//9.清除版本信息
    		WSACleanup();
    		return -1;
    	}
    	cout << "绑定成功!" << endl;
    
    	//5.监听
    	r = listen(serverSocket, 10);
    	if (r == -1) {
    		cout << "监听失败!" << GetLastError() << endl;
    		//8.关闭socket
    		closesocket(serverSocket);
    		//9.清除版本信息
    		WSACleanup();
    		return -1;
    	}
    	cout << "监听成功!" << endl;
    
    	//6.等待客户端连接(多客户端连接)
    	for (int i = 0; i < 1001; i++) {
    		clientSocket[i] = accept(serverSocket, (sockaddr*)&cAddr, &len);//获取客户端的socket
    			if (clientSocket[i] == SOCKET_ERROR) {
    			cout << "客户端连接失败:" << GetLastError() << endl;
    			//关闭socket
    			closesocket(serverSocket);
    			//9.清楚版本信息
    			WSACleanup();
    			return -1;
    		}
    		cout << "客户端连接成功!" << endl;
    
    
    		//7 通信  多线程实现 chat函数实现
    		CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)chat, (LPVOID)i, NULL, NULL);//多线程实现
    	}
    		
    
    	//8.关闭socket
    	closesocket(serverSocket);
    
    	//9.清理协议版本信息
    	WSACleanup();
    
    	while (1);//停顿
    	return 0;
    }
    

    客户端

    多次点击TcpClient.exe可以产生多个窗口

    //TcpClient.exe
    
    #include<stdio.h>
    #include <Winsock2.h>
    #include<WS2tcpip.h>
    #pragma comment(lib,"ws2_32.lib")
    #include<iostream>
    using namespace std;
    #include<windows.h>
    
    int main() {
    
    	//1.确定协议版本
    	WSADATA wsadata;
    	WSAStartup(MAKEWORD(2, 2), &wsadata);//2.2版本
    	if (LOBYTE(wsadata.wVersion) != 2 || HIBYTE(wsadata.wVersion) != 2) {
    		cout << "确认版本失败!\n" << endl;
    		return -1;
    	}
    	cout << "确认版本成功!" << endl;
    
    	//2.创建Socket
    	SOCKET clientSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);//参数:协议类型、通信载体(字节流)、ip保护方式
    	if (clientSocket == SOCKET_ERROR) {
    		cout << "创建socket失败!" << GetLastError() << endl;
    		//9.清楚版本信息
    		WSACleanup();
    		return -1;
    	}
    	cout << "socket创建成功!" << endl;
    
    	//3.获取服务器协议地址族
    	//就是一个结构体
    	SOCKADDR_IN addr = { 0 };
    	addr.sin_family = AF_INET;
    	inet_pton(AF_INET, "192.168.31.100", (void*)&addr.sin_addr.S_un.S_addr);
    	//addr.sin_addr.S_un.S_addr = inet_addr("192.168.31.100");//局域网地址
    	addr.sin_port = htons(9999);//设置端口号 小端转大端
    
    	//4.连接服务器
    	int r = connect(clientSocket, (sockaddr*)&addr,sizeof addr);
    	if (r == -1) {
    		cout << "连接服务器失败:" << GetLastError() << endl;
    		//6.关闭socket
    		closesocket(clientSocket);
    		//7 清理版本信息
    		WSACleanup();
    		return -1;
    	}
    	cout << "服务器连接成功!" << endl;
    
    	//5.通信
    	char buff[1024];
    	while (1) {
    		cin >> buff;//用户输入信息
    		send(clientSocket, buff, strlen(buff), NULL);//发送信息
    
    
    	}
    
    	//6.关闭socket
    	closesocket(clientSocket);
    
    	//7.清理协议版本信息
    	WSACleanup();
    
    	while (1);//停顿
    	return 0;
    }
    

    运行效果:
    在这里插入图片描述

    更多相关内容
  • 简单的即时通信软件

    2016-01-14 11:04:37
    即时通信软件 课程设计 简单的即时通信软件
  • 基于Linux系统的即时通信软件开发.pdf
  • 安全即时通信软件设计和实现-用户端设计文件综述 摘要 本文首先综述了即时通信发展情况列举了部分研究结果应用介绍即时通信系统工作原理其次分析了即时通信系统各功效模块和软件层次结构同时分析了即时通信软件面临...
  • UDP 即时通信软件源码

    2019-02-26 12:43:49
    基于UDP的即时通信源码,简单进行了丢包处理,可作为学习资料
  • 易语言fengker即时通信软件源码,fengker即时通信软件,绘制皮肤,组件事件,用户_注册,用户_修改,用户_登录,钩子回调函数,聊天窗口事件,聊天_发送,列出分组,当前好友信息,创建成员组,加入群成员,启用浏览器,初始化群...
  • 基于TCP协议的简单即时通信软件的设计与实现(含源文件).pdf
  • 易语言fengker即时通信软件易语言源码.rar 易语言fengker即时通信软件易语言源码.rar 易语言fengker即时通信软件易语言源码.rar 易语言fengker即时通信软件易语言源码.rar 易语言fengker即时通信软件易语言源码....
  • 任务:采用加密、数字签名技术技术对即时通讯软件通信进行保护。 功能要求: 1.可以进行通信的身份验证,登陆时需要对密码进行加密; 2.采用公钥密码技术验证和签名; 3.采用公钥密码和对称密码结合来进行消息加密...
  • fengker即时通信软件易语言源码.zip易语言项目例子源码下载fengker即时通信软件易语言源码.zip易语言项目例子源码下载 1.合个人学习技术做项目参考 2.适合学生做毕业设计参考 3.适合小团队开发项目参考
  • 自己做的一个基于linux的即时通信软件,包含有图形界面,使用简单,可供大家下载使用,如果不会使用,可以私聊博主
  • fengker即时通信软件.rar fengker即时通信软件.rar fengker即时通信软件.rar fengker即时通信软件.rar fengker即时通信软件.rar fengker即时通信软件.rar
  • 基于TCP协议的简单即时通信软件的设计与实现(含源文件).docx基于TCP协议的简单即时通信软件的设计与实现(含源文件).docx基于TCP协议的简单即时通信软件的设计与实现(含源文件).docx基于TCP协议的简单即时通信软件的...
  • “安全即时通信软件的设计与实现-客户端设计”文献综述.pdf“安全即时通信软件的设计与实现-客户端设计”文献综述.pdf“安全即时通信软件的设计与实现-客户端设计”文献综述.pdf“安全即时通信软件的设计与实现-...
  • “安全即时通信软件的设计与实现-客户端设计”文献综述.docx“安全即时通信软件的设计与实现-客户端设计”文献综述.docx“安全即时通信软件的设计与实现-客户端设计”文献综述.docx“安全即时通信软件的设计与实现-...
  • 基于TCP协议的简单即时通信软件的设计与实现(含源文件) (2).docx基于TCP协议的简单即时通信软件的设计与实现(含源文件) (2).docx基于TCP协议的简单即时通信软件的设计与实现(含源文件) (2).docx基于TCP协议的简单...
  • java实现的双机通信,有点类似于简单的QQ程序
  • 易语言源码fengker即时通信软件易语言源码.rar 易语言源码fengker即时通信软件易语言源码.rar 易语言源码fengker即时通信软件易语言源码.rar 易语言源码fengker即时通信软件易语言源码.rar 易语言源码fengker...
  • 基于WinSock的即时通信软件功能原理模拟.doc
  • 课程设计ASP.NET基于TCP协议的简单即时通信软件的设计与实现(源代码+论文)源代码下载源代码下载 课程设计ASP.NET基于TCP协议的简单即时通信软件的设计与实现(源代码+论文)源代码下载源代码下载 课程设计ASP.NET基于...
  • 通信企业管理网络即时 通信软件协议分析 网络即时通信软件协议分析 摘要随着人们对即时通信软件的依赖越来越大而对于这些即时通信软件 的协议分析也显得越来越重要本文主要即时通信软件的发展现状比较了几款 即时...
  • 随着智能通信设备性能的不断提升,通信系统的需求也越来越高,而Linux 作为一种开源的操作系统平台,基于其为进行即时通讯软件的开发研究可以有效地提升通信的效率与质量。对此,文章主要对基于Linux 系统的即时通讯...
  • 局域网即时通信软件.docx
  • fengker即时通信软件易语言源码
  • 即时通信软件

    2014-11-27 13:38:22
    即时通信软件 可以传输文件 也可以接收文件
  • 在Ubuntu实现点对点通信、点对多通信及tcp、udp文件收发

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 51,382
精华内容 20,552
关键字:

即时通信软件