网络 (tcp)

server/2024/12/22 9:06:41/

 

客户端

/*************************************************************************> File Name: client.c> Author: yas> Mail: rage_yas@hotmail.com> Created Time: Thu 22 Aug 2024 04:04:26 PM CST************************************************************************/#include<stdio.h>
#include <stdio.h>
#include <sys/types.h>	    
#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/ip.h>
#include <arpa/inet.h>
#include <string.h>
#include <signal.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/wait.h>
#include <sys/types.h>  
#include <sys/socket.h>
#include <stdlib.h>
int c_fd;
int f_fd;
void handler(int signal)
{close(f_fd);kill(getpid(),'9');wait(NULL);
}
int main(void)
{int fd = socket(AF_INET, SOCK_STREAM,0);if(fd == -1){perror("socket fail");return 1;}struct sockaddr_in seraddr;seraddr.sin_family = AF_INET;seraddr.sin_port = htons(50000);seraddr.sin_addr.s_addr = inet_addr("192.168.149.128");if((connect(fd,(const struct sockaddr*)&seraddr,sizeof(seraddr))) < 0){perror("connect fail");return 1;}char buf[1024];pid_t pid = fork();if(pid == -1){perror("fork fail");return 1;}if(pid > 0){f_fd  = fd;while(1){signal(SIGCHLD,handler);fgets(buf,sizeof(buf),stdin);buf[strlen(buf) - 1] = '\0';write(fd,buf,strlen(buf) + 1);if(strncmp(buf,"q",1) == 0){kill(pid,'9');break;}}}else if(pid == 0){c_fd = fd;while(1){read(fd,buf,sizeof(buf));printf("buf = %s\n", buf);if(strncmp(buf,"q",1) == 0){close(c_fd);break;}}}return 0;
}

服务器端 

/*************************************************************************> File Name: server.c> Author: yas> Mail: rage_yas@hotmail.com> Created Time: Thu 22 Aug 2024 05:22:36 PM CST************************************************************************/#include<stdio.h>
#include <stdio.h>
#include <sys/types.h>	    
#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/ip.h>
#include <arpa/inet.h>
#include <string.h>
#include <signal.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/wait.h>
#include <stdlib.h>
int f_fd;
int c_fd;void handler(int signal)
{wait(NULL);close(f_fd);kill(getpid(),'9');
}
int main(void)
{int listenfd = socket(AF_INET, SOCK_STREAM,0);if(listenfd == -1){perror("socket fail");return 1;}struct sockaddr_in seraddr;seraddr.sin_family = AF_INET;seraddr.sin_port = htons(50000);seraddr.sin_addr.s_addr = inet_addr("192.168.149.128");if((bind(listenfd,(const struct sockaddr*)&seraddr,sizeof(seraddr))) < 0){perror("connect fail");return 1;}if(listen(listenfd,5) < 0){perror("listen fail");return 1;}int connfd = accept(listenfd,NULL,NULL);if(connfd == -1){perror("connfd fail");return 1;}printf("connfd = %d\n", connfd);char buf[1024];pid_t pid = fork();if (pid == -1){perror("fork fail");return 1;}if(pid > 0){f_fd = listenfd;while(1){signal(SIGCHLD,handler);fgets(buf, sizeof(buf), stdin);buf[strlen(buf) - 1] = '\0';write(connfd,buf,strlen(buf) + 1);if(strncmp(buf,"q",1) == 0){kill(pid,'9');break;}}}else if(pid == 0){c_fd = listenfd;while(1){read(connfd,buf,sizeof(buf));printf("buf = %s\n", buf);if(strncmp(buf, "q",1) == 0){close(c_fd);break;}}}return 0;
}


http://www.ppmy.cn/server/107889.html

相关文章

【赵渝强老师】执行Oracle的冷备份与冷恢复

冷备份与冷恢复是指发生在数据库已经正常关闭的情况下进行的备份和恢复。由于此时数据库已经关闭&#xff0c;通过冷备份可以将数据库的关键性文件拷贝到另外存储位置。冷备份因为只是拷贝文件&#xff0c;因此备份的速度非常快。在执行恢复时&#xff0c;只需将文件再拷贝回去…

当JVM中出现负载突然过大的情况时,我们该如何应对?

在Java应用程序的运行过程中&#xff0c;偶尔会遇到JVM&#xff08;Java虚拟机&#xff09;负载突然增大的情况。这种情况可能会导致应用程序性能下降&#xff0c;甚至影响用户体验。本文将详细介绍当JVM中出现负载突然过大时&#xff0c;我们应该如何诊断问题、采取优化措施&a…

搭建FTP服务器,通过浏览器访问FTP服务器,测试终端上传的音频文件。

文章目录 引言I 搭建FTP服务器II 浏览器访问FTP文件PC端浏览器访问iphone-safari浏览器访问FTP设置Mac-Safari浏览器访问FTP设置III FTP基础知识FTP客户端数据连接: 被动模式(PASV)引言 需求: 通过浏览器访问,测试终端通过FTP上传的语音文件,支持直接播放语音文件。 建议…

【Python机器学习】NLP分词——利用分词器构建词汇表(一)

在NLP中&#xff0c;分词&#xff08;也称切词&#xff09;是一种特殊的文档切分过程。而文档切分能够将文本切分成更小的文本块或片段&#xff0c;其中含有更集中的信息内容。文档切分可以是将文本分成段落&#xff0c;将段落分成句子&#xff0c;将句子分成短语&#xff0c;或…

投稿当天送外审!5本硕博宝藏SCI!

本期小编带来计算机领域5本好中的SCI&#xff0c;供各位小伙伴参考&#xff1a; Journal of Supercomputing • 影响因子&#xff1a;2.5 • JCR2区&#xff0c;中科院3区 • Index&#xff1a;SCIE • 预警记录&#xff1a;无 • 自引率&#xff1a;8.00% • 国人占比&a…

TCP/UCP

Loop本地回环 定义&#xff1a;Loop本地回环通常指的是以127开头的IP地址段&#xff08;127.0.0.1 – 127.255.255.254&#xff09;&#xff0c;其中127.0.0.1是最常用的地址&#xff0c;被称为本地回环地址&#xff08;Loop back address&#xff09;。特点&#xff1a;不属于…

看图学sql之sql 中的UNION 和union all

UNION 用于合并两个或者多个 SELECT 语句的结果集 语法&#xff1a; SELECT column1, column2 ... FROM table1, table2 [WHERE condition1]UNION / UNION ALLSELECT column1, column2 ... FROM table1, table2 [WHERE condition2] 数据分析社区直达 免费数据分析资料下载。…

Git -- 总结 01

Git 使用前配 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> </head>…