当前位置: 首页 > wzjs >正文

网站注册域名备案企业培训系统

网站注册域名备案,企业培训系统,网站建设怎么做账会计,wordpress 备份工具怎么使用思路&#xff1a;每几秒发送一条不显示的信息&#xff0c;客户端断开则不再发送信息&#xff0c;超时则表示客户端断开连接。&#xff08;心跳包&#xff09; 服务器 #include <head.h>#define MAX_CLIENTS 100 // 最大支持100个客户端 #define TIMEOUT 5 // 5秒…

思路:每几秒发送一条不显示的信息,客户端断开则不再发送信息,超时则表示客户端断开连接。(心跳包)

服务器

#include <head.h>#define MAX_CLIENTS 100  // 最大支持100个客户端
#define TIMEOUT 5        // 5秒超时struct Client {struct sockaddr_in addr;time_t last_seen;  // 记录最后一次收到该客户端数据的时间
};struct Client client_list[MAX_CLIENTS];
int client_count = 0;// **更新客户端心跳时间**
void update_client(struct sockaddr_in *client_addr) {time_t now = time(NULL);for (int i = 0; i < client_count; i++) {if (memcmp(&client_list[i].addr, client_addr, sizeof(struct sockaddr_in)) == 0) {client_list[i].last_seen = now;  // 更新时间return;}}// **如果客户端不在列表中,则添加**if (client_count < MAX_CLIENTS) {client_list[client_count].addr = *client_addr;client_list[client_count].last_seen = now;client_count++;}
}// **检查超时客户端**
void check_clients() {time_t now = time(NULL);for (int i = 0; i < client_count; i++) {if (now - client_list[i].last_seen > TIMEOUT) {printf("客户端 %s:%d 断开\n",inet_ntoa(client_list[i].addr.sin_addr),ntohs(client_list[i].addr.sin_port));// **移除客户端**for (int j = i; j < client_count - 1; j++) {client_list[j] = client_list[j + 1];}client_count--;i--;  // **继续检查下一个**}}
}int main(int argc, const char *argv[]) {if (argc < 2) {printf("请输入端口号\n");return 1;}short port = atoi(argv[1]);// **创建 UDP 套接字**int receiver = socket(AF_INET, SOCK_DGRAM, 0);struct sockaddr_in addr = {0};addr.sin_family = AF_INET;addr.sin_port = htons(port);addr.sin_addr.s_addr = inet_addr("0.0.0.0");if (bind(receiver, (struct sockaddr*)&addr, sizeof(addr)) == -1) {perror("bind");return 1;}printf("服务器启动,监听端口 %d\n", port);struct sockaddr_in client_addr;socklen_t addr_len = sizeof(client_addr);char buf[64];fd_set readfds;struct timeval timeout;while (1) {// **使用 select 进行超时检测**FD_ZERO(&readfds);FD_SET(receiver, &readfds);timeout.tv_sec = 1;  // 每秒检查一次timeout.tv_usec = 0;int activity = select(receiver + 1, &readfds, NULL, NULL, &timeout);if (activity > 0) {// **接收数据**memset(buf, 0, sizeof(buf));int len = recvfrom(receiver, buf, sizeof(buf) - 1, 0, (struct sockaddr*)&client_addr, &addr_len);if (len > 0) {buf[len] = '\0';update_client(&client_addr);  // **更新心跳时间**// **如果是心跳包 "PING",不打印、不转发**if (strcmp(buf, "PING") == 0) {continue;}printf("收到消息: %s\n", buf);// **转发消息给所有在线客户端**for (int i = 0; i < client_count; i++) {sendto(receiver, buf, strlen(buf), 0, (struct sockaddr*)&client_list[i].addr, sizeof(client_list[i].addr));}}}// **检查超时客户端**check_clients();}return 0;
}

客户端

#include <head.h>
#include <pthread.h>#define BUF_SIZE 64int sender;  // 套接字struct sockaddr_in addr;void *heartbeat(void* arg)
{while(1){// 发送空的心跳包sendto(sender, "", 1, 0, (struct sockaddr*)&addr, sizeof(addr));sleep(2);  // 每2秒发送一次心跳包}
}int main(int argc, const char *argv[])
{if (argc < 2) {printf("请输入端口号\n");return 1;}short port = atoi(argv[1]);// 创建套接字sender = socket(AF_INET, SOCK_DGRAM, 0);if (sender == -1) {perror("创建套接字失败");return 1;}addr.sin_family = AF_INET;addr.sin_port = htons(port);addr.sin_addr.s_addr = inet_addr("192.168.128.20");  // 服务器的IP地址// 启动心跳包线程pthread_t heart;pthread_create(&heart, NULL, heartbeat, NULL);while (1) {char buf[BUF_SIZE] = "";printf("输入:");scanf("%s", buf);getchar();  // 读取输入并去掉换行符// 发送普通消息sendto(sender, buf, strlen(buf), 0, (struct sockaddr*)&addr, sizeof(addr));// 接收服务器的回复int len = recvfrom(sender, buf, BUF_SIZE - 1, 0, NULL, NULL);if (len > 0) {buf[len] = '\0';  // 确保字符串以 '\0' 结尾printf("接收到回复的消息: %s\n", buf);} else {printf("接收服务器消息失败\n");}}// 关闭套接字close(sender);return 0;
}

http://www.dtcms.com/wzjs/397842.html

相关文章:

  • 阐述电子商务网站的建设要求友情链接检测方法
  • 微信服务号可以做万网站么视频剪辑培训班一般学费多少
  • 如何在网站中做二级下拉菜单windows优化大师兑换码
  • 网站建设参考企业网站推广方案策划
  • 做好网站开发工作总结免费发广告网站
  • 网站建设文化服务公司seo推广一个月见效
  • 网站审批号关键词推广系统
  • 银川网站建设公司引擎搜索大全
  • 广东省建设安全监督站的网站seo的课谁讲的好
  • 用网站空间可以做有后台的网站吗自己个人怎样做电商
  • php 网站开发流程页面优化
  • laravel 跳转到其他网站软文代写平台有哪些
  • 广东汽车品牌网站建设专业的网页制作公司
  • 高端网站教建设怎样创建自己的电商平台
  • 公司有域名的怎么建设网站成都seo招聘信息
  • 哪里可以接一些网站项目做万网的app叫什么
  • 上海平台网站建设友情链接还有用吗
  • 寺院的网站怎么做温州云优化seo
  • 做本地网站持续优化完善防控措施
  • 哈尔滨网页设计网络优化是做什么的
  • wordpress 企業網深圳专业seo
  • 内蒙古网站备案百度seo优化软件
  • 做网站的分辨率要多大好搜搜索引擎
  • 秦皇岛网络编辑网站网络平台有哪些?
  • 电商网站建设网石家庄网络营销
  • 不需要网站备案的空间餐饮营销策划与运营
  • 监管网站建设情况百度推广关键词匹配模式
  • 网页设计网站链接怎么做营销活动策划方案
  • 福建手工外发加工网手机优化软件哪个好用
  • dw里响应式网站怎么做智能建站模板