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

网络 (tcp)

 

客户端

/*************************************************************************> 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.mrgr.cn/news/11832.html

相关文章:

  • windows中使用vscode的remote-ssh连接linux失败
  • AR 眼镜之-系统应用音效-实现方案
  • 11. HashSet的内部实现原理是什么?它如何保证元素不重复?
  • SSRF漏洞——pikachu
  • Excel中使用VBS自定义函数将中文转为拼音首字母
  • 浙商之源——龙游商帮丨龙游商帮的具象文化符号之建筑篇
  • QtWebEngineView加载本地网页
  • Linux项目自动化构建工具-make/Makefile
  • Java共享内容通信 VS Golang通信共享内存
  • 数据结构---顺序表---单链表
  • 93.WEB渗透测试-信息收集-Google语法(7)
  • 小琳AI课堂:生成对抗网络(GANs)
  • Spring security 密码加密使用
  • 数据结构-递归算法-第四天
  • 苹果发布iOS 18 Beta 7更新:RC准正式版正在路上
  • 论文《Graph Structural Attack by Perturbing Spectral Distance》笔记
  • ReadAgent,一款具有要点记忆的人工智能阅读代理
  • 云知声多模态模型:实时多模态输入输出;独立于 Siri ,苹果或开发新 AI 用于机器人丨 RTE 开发者日报
  • 《黑神话·悟空》的编程语言探讨
  • Ant Design Vue修改表格样式