TCP C/S 多进程模型
来源:互联网 发布:淘宝商品出售编辑 编辑:程序博客网 时间:2024/05/29 06:32
client.c
#include<errno.h>#include<semaphore.h>#include<string.h>#include<sys/stat.h>#include<fcntl.h>#include<errno.h>#include<stdlib.h>#include<unistd.h>#include<stdio.h>#include<sys/mman.h>#include<sys/types.h>#include<signal.h>#include<pthread.h>#include<netinet/in.h>#include<arpa/inet.h>#include<sys/socket.h>#define SERVER_PORT 8000#define MAXLINE 4096int main(){ struct sockaddr_in serveraddr,clientaddr; int confd,len=sizeof(clientaddr); char ipstr[]="192.168.133.128"; char buf[MAXLINE]; confd=socket(AF_INET,SOCK_STREAM,0); bzero(&serveraddr,sizeof(serveraddr)); serveraddr.sin_family=AF_INET; inet_pton(AF_INET,ipstr,&serveraddr.sin_addr.s_addr); serveraddr.sin_port=htons(SERVER_PORT); if(connect(confd,(struct sockaddr*)&serveraddr,sizeof(serveraddr))==-1){ perror("connect"); } if(getsockname(confd,(struct sockaddr*)&clientaddr,(socklen_t*)&len)==-1){ perror("getsockname"); } printf("%d\n",ntohs(clientaddr.sin_port)); while(fgets(buf,sizeof(buf),stdin)){ write(confd,buf,strlen(buf)); len=read(confd,buf,sizeof(buf)); write(STDOUT_FILENO,buf,len); } close(confd); return 0;}
server.c
#include<errno.h>#include<semaphore.h>#include<string.h>#include<sys/stat.h>#include<fcntl.h>#include<errno.h>#include<stdlib.h>#include<unistd.h>#include<stdio.h>#include<sys/mman.h>#include<sys/types.h>#include<signal.h>#include<pthread.h>#include<netinet/in.h>#include<arpa/inet.h>#include<sys/socket.h>#define SERVER_PORT 8000#define MAXLINE 4096int main(){ struct sockaddr_in serveraddr,clientaddr; int sockfd,addrlen,confd,len,i; char ipstr[128]; char ans[]="I get it!\n"; char buf[MAXLINE]; pid_t pid; sockfd=socket(AF_INET,SOCK_STREAM,0); bzero(&serveraddr,sizeof(serveraddr)); serveraddr.sin_family=AF_INET; serveraddr.sin_addr.s_addr=htonl(INADDR_ANY); serveraddr.sin_port=htons(SERVER_PORT); bind(sockfd,(struct sockaddr*)&serveraddr,sizeof(serveraddr)); listen(sockfd,128); while(1){ addrlen=sizeof(clientaddr); confd=accept(sockfd,(struct sockaddr*)&clientaddr,&addrlen); inet_ntop(AF_INET,&clientaddr.sin_addr.s_addr,ipstr,sizeof(ipstr)); printf("client ip %s\nport %d\n",ipstr,ntohs(clientaddr.sin_port)); pid=fork(); if(pid==0){ close(sockfd); while(1){ len=read(confd,buf,sizeof(buf)); if(len<2)break; write(STDOUT_FILENO,buf,len); write(confd,ans,sizeof(ans)); } close(confd);return 0; } else if(pid>0){ close(confd); } } close(sockfd); return 0;}
0 0
- TCP C/S 多进程模型
- C/S模型-TCP
- C/S模型---TCP方式
- TCP C/S 多线程模型
- 基于tcp的C/S模型
- 多进程并发C/S通信基本模型及实现
- [C语言]基于TCP的基本C/S模型
- Socket的C/S模型与TCP关系
- 通用基于TCP协议的C/S模型的代码
- TCP/IP与UDP 的C/S 模型
- 基于TCP的C/S网络编程模型
- C实现简单TCP的C/S模型(Linux & Mac OS系统)
- python C/S模型
- C/S模型
- C/S通讯模型
- C-S基本模型
- C/S架构与多进程多线程
- 基于TCP连接的C S模式的最简单模型代码
- OPENGL视频学习(八)
- 微信图文回复
- 曼巴精神
- Asp.net过滤器理论基础(上篇)
- Hibernate 实体关系映射(未完成版)
- TCP C/S 多进程模型
- C++中引用的概念[北京大学C++课程]
- Android系统的开机画面显示过程分析
- poj 2112 最大流之Dinic算法+Floyd
- javascript函数调用的时候加不加括号的区别
- [生存志] 第19节 历代大事件概览 南北朝
- Struts学习笔记二:Struts入门HelloWorld
- JavaScript函数的调用以及参数传递(转载)
- 1.Android中进程和线程