TCP通信,多进程
来源:互联网 发布:网络社区的主要形式 编辑:程序博客网 时间:2024/05/23 15:20
<原创>
多进程,可以随意的发送与接收.
服务器端程序:
/*************************************************************************
> File Name: server.c
> Author:
> Mail:
> Created Time: Thu 11 Jun 2015 12:34:37 AM PDT
************************************************************************/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<netinet/ip.h> /* superset of previous */
#include<netinet/in.h>
#include<arpa/inet.h>
#include<errno.h>
int main(int argc,const char *argv[])
{
pid_t pid;
char buff[1024];
int serverfd,connfd;
serverfd = socket(PF_INET,SOCK_STREAM,0);
if(serverfd ==-1)
{
perror("socket");
exit(EXIT_FAILURE);
}
struct sockaddr_in servaddr;
servaddr.sin_family = PF_INET;
servaddr.sin_port = htons(8888);
servaddr.sin_addr.s_addr = inet_addr("192.168.1.102");
if (bind(serverfd,(struct sockaddr*)&servaddr,sizeof(servaddr))==-1)
{
perror("bind");
exit(EXIT_FAILURE);
}
printf("bind success!\n");
if(listen(serverfd,8)==-1)
{
perror("listen");
exit(EXIT_FAILURE);
}
printf("listen...\n");
connfd = accept(serverfd,NULL,NULL);
if(connfd == -1)
{
perror("accept");
exit(EXIT_FAILURE);
}
printf("connected..\n");
if((pid = fork())==-1)
{
perror("fork");
exit(EXIT_FAILURE);
}
else if(pid ==0)
{
while(1)
{
recv(connfd,buff,sizeof(buff),0);
printf("kuhuduan:%s",buff);
}
}
else
{
while(1)
{
fgets(buff,sizeof(buff),stdin);
send(connfd,buff,sizeof(buff),0);
}
}
return 0;
}
客户端程序:
/*************************************************************************
> File Name: client.c
> Author:
> Mail:
> Created Time: Thu 11 Jun 2015 12:58:14 AM PDT
************************************************************************/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
#include<sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/ip.h> /* superset of previous */
#include <netinet/in.h>
#include <arpa/inet.h>
int main(int argc, const char *argv[])
{
int clientfd;
pid_t pid;
char buff[1024];
clientfd = socket(PF_INET,SOCK_STREAM,0);
if(clientfd == -1)
{
perror("socket");
exit(EXIT_FAILURE);
}
struct sockaddr_in servaddr;
servaddr.sin_family = PF_INET;
servaddr.sin_port = htons(8888);
servaddr.sin_addr.s_addr = inet_addr("192.168.1.102");
if(connect(clientfd,(struct sockaddr *)&servaddr,sizeof(servaddr))==-1)
{
perror("connect");
exit(EXIT_FAILURE);
}
printf("connect success!\n");
if((pid = fork())==-1)
{
perror("fork");
exit(EXIT_FAILURE);
}
else if(pid == 0)
{
while(1)
{
fgets(buff,sizeof(buff),stdin);
if (send(clientfd,buff,sizeof(buff),0)==-1)
{
perror("send");
exit(EXIT_FAILURE);
}
}
}
else
{
while(1)
{
if(recv(clientfd,buff,sizeof(buff),0)==-1)
{
perror("recv");
exit(EXIT_FAILURE);
}
printf("fuwuqi:%s",buff);
}
}
}
- TCP通信,多进程
- socket多进程TCP通信
- 进程间通信--TCP
- TCP服务器客户端进程通信
- tcp通信:多进程共享listen socket方式
- Linux下TCP多进程/多线程套接字通信
- 12.进程间通信---网络通信(TCP协议,一对多)
- 进程间通信之TCP demo1
- tcp(二)---多进程TCP
- 4.传输控制协议(TCP):进程到进程的通信
- Linux高级编程复习 第十章 TCP编程模型_TCP通信特点_TCP多进程服务器
- 多进程通信
- 多进程通信
- android多进程通信
- linux多进程通信
- 多进程通信
- 多进程通信 互斥量
- Aidl多进程通信
- 新得
- Android开发之Toast
- MyBatis插入数据后如何获得主键值
- iOS6和iOS7的导航栏区别
- SURF特征点检测--SurfFeatureDetector、SurfDescriptorExtractor和FlannBasedMatcher
- TCP通信,多进程
- mysql的一些练习题和面试题
- 使用Mina框架实现C/S通讯
- 成员函数的const到底修饰的是谁
- 使用GCD
- 近年来,学习图像去雾不得不看的论文和源代码
- Linux 内核开发 - Eclipse内核开发环境搭建
- 黑马程序员------面向对象01
- 怎样配置git密匙