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

TCP客户端进程分割输入输出

         创建TCP客户端,创建子进程分割TCP客户端的read功能和write功能,实现分割I/O的目的。加快客户端速率。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <signal.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#define BUFF_SIZE 1024
//错误输出
void error_handing(char*message)
{fputs(message, stderr);exit(1);
}
/*
**read_data()函数,实现套接字数据的读取功能
**socket:读取数据的套接字句柄
**buff :存储读取的数据
*/
void read_data(int socket, char* buff)
{while(1){int len = read(socket, buff, BUFF_SIZE);if(len == 0)return;buff[len] = 0;printf("Message from server is %s\n", buff);}
}
/*
**write_data()函数,实现套接字数据的写入功能
**socket:写入数据的套接字句柄
**buff :传入需要写入的数据
*/
void write_data(int socket, char* buff)
{while(1){if(strlen(buff)>0)write(socket, buff, strlen(buff));}
}int main()
{//初始化信号和相关变量即buffchar buff[BUFF_SIZE];pid_t pid;uint16_t port = 9999;//1、创建套接字int cli_socket = socket(PF_INET, SOCK_STREAM, 0);//2、绑定连接信息struct sockaddr_in ser_addr;memset(&ser_addr, 0, sizeof(ser_addr));ser_addr.sin_family = AF_INET;ser_addr.sin_addr.s_addr = inet_addr("192.168.1.110");//假设服务器地址为这个ser_addr.sin_port = htons(port);int ser_addrLen = sizeof(ser_addr);//3、连接到服务器if(connect(cli_socket, (struct sockaddr*)&ser_addr, sizeof(ser_addr)) == -1){error_handing("connect() error");}//4、连接成功创建进程,分割输入和输出pid = fork();if(pid == 0)read_data(cli_socket, buff);else{char *buf = "hello, I am write";write_data(cli_socket, buf);}close(cli_socket);return 0;
}

http://www.xdnf.cn/news/1026847.html

相关文章:

  • 【Qt】工具介绍和信号与槽机制
  • SpringCloud2020-alibaba
  • DDD各种架构详细介绍
  • CLONE——面向长时任务的闭环全身遥操:其MoE架构可实现“蹲着走”,且通过LiDAR里程计和VR跟踪技术解决位置偏差问题
  • 【61 Pandas+Pyecharts | 基于Apriori算法及帕累托算法的超市销售数据分析可视化】
  • 力扣-279.完全平方数
  • 三维重建 —— 3. 单视几何
  • 国产用例管理工具评测:Gitee Test、禅道、蓝凌测试、TestOps 哪家更懂研发协同?
  • 全流程TOUGH系列软件实践技术应用
  • electron-builder打包配置(应用名、安装包、图标、快捷方式、自定义文件关联启动等)
  • Matlab的GUI编程之一
  • 【Android】EventBus详解
  • 基于Redis实现分布式锁
  • 安科瑞亮相2025 SNEC国际太阳能光伏与智慧能源展
  • 7N65-ASEMI智能照明领域专用7N65
  • onxxrunrime问题集锦
  • 黑色金属生产车间:DeviceNet到Modbus RTU网关的“无声桥梁”
  • 【DNS】在 Windows 下修改 `hosts` 文件
  • java哨兵底层原理
  • 社区养老模式:现状、困境与破局之道
  • PH热榜 | 2025-06-13
  • Vim、Nano 与 Emacs 的深度对比及嵌入式开发推荐
  • TIA Portal V20HMI仿真时数值无法写入虚拟plc解决教程
  • SIEMENS 6SL3320-1TG35-8AA3逆变装置
  • SpringCloud-sentinel集成到nacos
  • wireshark抓包过程
  • 《TCP/IP 详解 卷1:协议》第6章:DHCP和自动配置
  • velo2cam_gazebo /velo2cam_calibration 仿真标定测试
  • AbMole小课堂:从肿瘤研究到体内模型构建,Mitomycin C一“剂”搞
  • 【实用生信代码】分子对接后的分子动力学模拟实战——OpennMM