新人做网站不懂设计版面怎么办,windows软件开发工具,dede网站迁移步骤,营口市代做网站1.题目描述 局域网 IP 多播程序#xff0c;设计一个图形界面的网络会议程序#xff08;实现文本多播方式即可#xff09;。 2.演示Demo 3.参考代码
广播发送代码
//服务端
#include winsock2.h
#include iostream
#include list#pragma comment(l…1.题目描述 局域网 IP 多播程序设计一个图形界面的网络会议程序实现文本多播方式即可。 2.演示Demo 3.参考代码
广播发送代码
//服务端
#include winsock2.h
#include iostream
#include list#pragma comment(lib, ws2_32.lib)
using namespace std;// 线程处理函数12
DWORD WINAPI ThreadFun(LPVOID lpThreadParameter);void init_app();void Send_All(listSOCKET Client_List_Now, char *msg, SOCKET This_Socket);void *Send_Msg(void *pVoid);SOCKET Socket;
listSOCKET Client_List;
sockaddr_in addrClient;int len sizeof(sockaddr_in);int main() {init_app();pthread_t tids;pthread_create(tids, NULL, Send_Msg, Socket);//主线程循环接收客户端的连接while (true) {// 接受成功返回与client通讯的SocketSOCKET Client accept(Socket, (SOCKADDR *) addrClient, len);if (Client ! INVALID_SOCKET) {// 创建线程并且传入与client通讯的套接字HANDLE hThread CreateThread(NULL, 0, ThreadFun, (LPVOID) Client, 0, NULL);CloseHandle(hThread); // 关闭对线程的引用}}
}void *Send_Msg(void *pVoid) {char *msg;do {cout 发送广播: ,cin msg ;Send_All(Client_List, msg, NULL);} while (true);}DWORD WINAPI ThreadFun(LPVOID lpThreadParameter) {// 接受数据SOCKET This_Socket (SOCKET) lpThreadParameter;cout This_Socket 加入广播 endl;Client_List.push_back(This_Socket);// 循环接收客户端状态int ret 0;do {char buf2[100] {0};ret recv(This_Socket, buf2, 100, 0);} while (ret ! SOCKET_ERROR ret ! 0);Client_List.remove(This_Socket);cout This_Socket 离线 endl;return 0;
}void Send_All(listSOCKET Client_List_Now, char *msg, SOCKET This_Socket) {if (This_Socket ! NULL)Client_List_Now.remove(This_Socket);for (auto iter: Client_List_Now) {send(iter, msg, strlen(msg), 0);}
}void init_app() {cout 服务端 endl;WSADATA wd;if (WSAStartup(MAKEWORD(2, 2), wd) ! 0) {cout WSAStartup Error: WSAGetLastError() endl;return;}// 创建流式套接字Socket socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);if (Socket INVALID_SOCKET) {cout socket error: WSAGetLastError() endl;return;}//绑定端口和ipsockaddr_in addr;memset(addr, 0, sizeof(sockaddr_in));addr.sin_family AF_INET;addr.sin_port htons(8000);addr.sin_addr.s_addr inet_addr(127.0.0.1);//服务端bind绑定if (bind(Socket, (SOCKADDR *) addr, len) SOCKET_ERROR) {cout bind Error: WSAGetLastError() endl;return;}// 监听20个以下设备listen(Socket, 20);
}
广播接收代码
//
// Created by 123 on 2024-1-2.
//
#includewinsock2.h//winsock2的头文件
#includeiostreamusing namespace std;void init_app();#pragma comment(lib, ws2_32.lib)SOCKET Socket;//客户端
int main() {init_app();//接收服务端的消息do {int ret 0;do {char buf[100] {0};ret recv(Socket, buf, 100, 0);if(ret ! SOCKET_ERROR ret ! 0)cout 收到广播: buf endl;} while (ret ! SOCKET_ERROR ret ! 0);} while (true);
}
void init_app() {cout 客户端 endl;WSADATA wd;//加载winsock2的环境if (WSAStartup(MAKEWORD(2, 2), wd) ! 0) {cout WSAStartup error GetLastError() endl;return;}//创建流式套接字Socket socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);if (Socket INVALID_SOCKET) {cout socket error GetLastError() endl;return;}//链接服务器sockaddr_in addr;addr.sin_family AF_INET;addr.sin_port htons(8000);addr.sin_addr.s_addr inet_addr(127.0.0.1);int len sizeof(sockaddr_in);if (connect(Socket, (SOCKADDR *) addr, len) SOCKET_ERROR) {cout connect error GetLastError() endl;return;}
} 4.导入ws2_32库到Clion :
导入ws2_32库到Clion项目-CSDN博客 2024 HNUST计算机网络课程设计-(ᕑᗢᓫ∗)˒芒果酱-参考文章 代码可以参考૮₍ ˃ ⤙ ˂ ₎ა 但同学们要认真编写哦 ------------------------------------------------------------------------- 1、网络聊天程序的设计与实现C Socket 多线程 网络聊天室 支持用户端双向交流(2023)-CSDN博客 2、Tracert 与 Ping 程序设计与实现Tracert 与 Ping 程序设计与实现2024-CSDN博客 3、滑动窗口协议仿真滑动窗口协议仿真2024-CSDN博客 4、OSPF 路由协议原型系统设计与实现OSPF 路由协议原型系统设计与实现-CSDN博客 5、基于 IP 多播的网络会议程序基于 IP 多播的网络会议程序2024-CSDN博客 6、编程模拟 NAT 网络地址转换编程模拟 NAT 网络地址转换(2024)-CSDN博客 7、网络嗅探器的设计与实现网络嗅探器的设计与实现(2024)-转载-CSDN博客 8、网络报文分析程序的设计与实现网络报文分析程序的设计与实现2024-CSDN博客 9、简单 Web Server 程序的设计与实现简单 Web Server 程序的设计与实现 (2024)-CSDN博客 10、路由器查表过程模拟 计算机网络 - 路由器查表过程模拟 C(2024)-CSDN博客