当前位置: 首页 > 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;
}

相关文章:

  • day65—回溯—单词搜索(LeetCode-79)
  • 【linux】简单的shell脚本练习
  • 开源模型应用落地-工具使用篇-从零开始搭建Qdrant Web UI-可视化管理工具-Windows(十)
  • 《第一章-初入江湖》 C++修炼生涯笔记(基础篇)C++初识
  • Doris catalog操作
  • 国标28181卡顿问题现场诊断报告
  • gbase8s之MyBatis批量update问题
  • WPF--Application.Current.Dispatcher.BeginInvoke
  • 人工智能之数学基础:如何将二次型转换为标准型?
  • QMainWindow、QDialog 和 QWidget区别
  • 一文读懂:晶振不同等级的差异及对应最佳应用场景
  • leetcode 2616. 最小化数对的最大差值 中等
  • 软考 系统架构设计师系列知识点之杂项集萃(88)
  • springboot+vue大文件断点续传
  • 前端JavaScript面试题(2)
  • Promise(async、await)
  • 非本地地址调用摄像头需要https
  • Coze扣子 - AI生成数字人口播视频
  • 多环境开发配置,Spring boot
  • 【leetcode】101. 对称二叉树
  • 宝塔搭建网站教程/直通车推广
  • 做一手房开什么网站比较好呢/搜索引擎优化期末考试答案
  • 西安网站建设畅网/搜索引擎入口网址
  • 用html5做网站的优点/近期新闻事件
  • 网站建设的资料的准备/网络推广应该怎么做啊
  • 做电影网站需要注意什么软件/在哪买网站链接