小程序毕设选题推荐:基于springboot+安卓的智慧医疗系统设计与实现基于springboot智慧医疗APP健康数据监测、智能提醒、远程咨询【附源码、mysql、文档、调试+代码讲解+全bao等】

核心内容摘要

最新m3u电视直播源,IPTV4 m3u8直播源M3U直播源,打包下载
MINERU本地部署:1小时打造你的产品原型

5个核心功能让Ryzen用户实现系统性能精准调控

文章目录TCP服务端基础服务端TCP服务设计模式迭代服务一次处理一个客户端多进程并发服务僵尸进程处理信号处理多线程并发服务嵌入式设备线程注意TCP客户端基础客户端交互式客户端客户端断线重连机制TCP服务端基础服务端// 基础TCP服务器核心流程#defineBUFFER_SIZE1024// 根据设备内存自定义charbuf[BUFFER_SIZE];intmain(){//

创建socketfdsocket(AF_INET,SOCK_STREAM,

;//

准备地址结构addr.sin_familyAF_INET;addr.sin_porthtons(PORT);addr.sin_addr.s_addr0;// INADDR_ANY的另一种写法//

绑定地址bind(fd,(structsockaddr*)addr,sizeof(addr));//

开始监听listen(fd,BACKLOG);//

接受连接阻塞等待newfdaccept(fd,NULL,NULL);// 不关心客户端地址//

接收数据read(newfd,buf,BUFFER_SIZE);//

关闭连接close(newfd);close(fd);return0;}TCP服务设计模式迭代服务一次处理一个客户端// 简化的迭代服务器框架while(

{client_fdaccept(server_fd,NULL,NULL);if(client_fd

continue;handle_client(client_fd);// 处理客户端请求close(client_fd);// 处理完后关闭}缺点无法并发处理多个客户端多进程并发服务// 父进程监听连接创建子进程处理// 子进程处理具体客户端请求结束后退出pid_tpidfork();if(pid

{// 子进程close(server_fd);// 关闭不需要的监听sockethandle_client(client_fd);close(client_fd);exit(

;// 子进程结束}else{// 父进程close(client_fd);// 父进程关闭已分发的客户端socketwaitpid(-1,NULL,WNOHANG);// 非阻塞回收子进程}僵尸进程处理信号处理// 使用信号处理函数回收子进程voidsigchld_handler(intsig){while(waitpid(-1,NULL,WNOHANG)

{// 回收所有已终止的子进程}}// 注册信号处理器signal(SIGCHLD,sigchld_handler);// 更推荐使用sigaction可重启系统调用structsigactionsa;sa.sa_handlersigchld_handler;sigemptyset(sa.sa_mask);sa.sa_flagsSA_RESTART|SA_NOCLDSTOP;sigaction(SIGCHLD,sa,NULL);多线程并发服务// 主线程监听连接创建子线程// 工作线程处理客户端请求void*client_handler(void*arg){intclient_fd*(int*)arg;// 处理客户端...close(client_fd);returnNULL;}// 创建线程处理每个客户端pthread_ttid;int*client_fd_ptrmalloc(sizeof(int));*client_fd_ptrclient_fd;pthread_create(tid,NULL,client_handler,client_fd_ptr);pthread_detach(tid);// 分离线程自动回收资源嵌入式设备线程注意//

设置线程栈大小嵌入式内存有限pthread_attr_tattr;pthread_attr_init(attr);pthread_attr_setstacksize(attr,

;// 8KB栈空间//

线程池模式避免频繁创建销毁线程//

注意线程安全共享数据加锁TCP客户端基础客户端// 核心流程intmain(){//

创建socketfdsocket(AF_INET,SOCK_STREAM,

;//

设置服务器地址addr.sin_familyAF_INET;addr.sin_porthtons(PORT);addr.sin_addr.s_addrinet_addr(

127.

0.

0.

;//

连接服务器connect(fd,(structsockaddr*)addr,sizeof(addr));//

发送数据write(fd,STR,sizeof(STR));//

关闭连接close(fd);}交互式客户端// 支持命令行参数和交互式输入intmain(intargc,char*argv[]){// 检查参数if(argc

{fprintf(stderr,用法: %s IP地址 端口\n,argv[0]);exit(EXIT_FAILURE);}// 解析参数char*server_ipargv[1];intserver_portatoi(argv[2]);// 创建socket和连接...// 交互循环while(

{printf(请输入消息: );fgets(buf,BUFSIZ,stdin);// 发送数据intnwrite(fd,buf,strlen(buf));if(n

{perror(发送失败);break;}// 可选接收服务器响应// n read(fd, response, sizeof(response));}}客户端断线重连机制// 嵌入式设备常用增加连接稳定性#defineMAX_RETRY5#defineRETRY_DELAY3// 秒intconnect_with_retry(constchar*ip,intport,intmax_retry){intsockfd;structsockaddr_inaddr;for(intretry0;retrymax_retry;retry){sockfdsocket(AF_INET,SOCK_STREAM,

;if(sockfd

{perror(创建socket失败);return-1;}memset(addr,0,sizeof(addr));addr.sin_familyAF_INET;addr.sin_porthtons(port);inet_pton(AF_INET,ip,addr.sin_addr);if(connect(sockfd,(structsockaddr*)addr,sizeof(addr))

{printf(连接成功第%d次尝试\n,retry

;returnsockfd;}close(sockfd);printf(连接失败%d秒后重试...\n,RETRY_DELAY);sleep(RETRY_DELAY);}fprintf(stderr,连接失败达到最大重试次数\n);return-1;}

狂虐女仆1.7.7安卓直装版游戏-狂虐女仆1.7.7安卓直装版游戏应用

百度百家号客服电话人工服务

123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123