C语言两个进程相互通信—socket
2011-12-16 18:25
267 查看
client.c
C代码
#include <sys/types.h>
#include <sys/socket.h>
#include <stdio.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <stdlib.h>
int main()
{
int sockfd;
int len;
struct sockaddr_in address;
int result;
int i,byte;
char char_recv,char_send;
if((sockfd = socket(AF_INET,SOCK_STREAM,0)) == -1)
{
perror("socket");
exit(EXIT_FAILURE);
}
address.sin_family = AF_INET;
address.sin_addr.s_addr = inet_addr("127.0.0.1");
address.sin_port = 8080;
len = sizeof(address);
if((result = connect(sockfd,(struct sockaddr *)&address,len)) == -1)
{
perror("connect");
exit(EXIT_FAILURE);
}
printf("please enter the context you want to send to server :");
scanf("%c",&char_send);
if(byte = send(sockfd,&char_send,1,0) == -1)
{
perror("send");
exit(EXIT_FAILURE);
}
if(byte = recv(sockfd,&char_recv,1,0) == -1)
{
perror("recv");
exit(EXIT_FAILURE);
}
printf("receive from server %c\n",char_recv);
close(sockfd);
exit(0);
}
server.c
C代码
#include <sys/types.h>
#include <sys/socket.h>
#include <stdio.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <stdlib.h>
char dict(char temp)
{
if(temp == 'Z')
{
return 'A';
}
return temp+1;
}
int main()
{
int server_sockfd,client_sockfd;
int server_len,client_len;
struct sockaddr_in server_address;
struct sockaddr_in client_address;
int i,btye;
char char_recv,char_send;
server_address.sin_family = AF_INET;
server_address.sin_addr.s_addr = inet_addr("127.0.0.1");
server_address.sin_port = 8080;
server_len = sizeof(server_address);
server_sockfd = socket(AF_INET,SOCK_STREAM,0);
bind(server_sockfd,(struct sockaddr *)&server_address,server_len);
listen(server_sockfd,5);
printf("server waiting for connect\n");
client_len = sizeof(client_address);
client_sockfd = accept(server_sockfd,(struct sockaddr *)&client_address,(socklen_t *)&client_len);
if(btye = recv(client_sockfd,&char_recv,1,0) == -1)
{
perror("recv");
exit(EXIT_FAILURE);
}
printf("receive from client is %c\n",char_recv);
char_send = dict(char_recv);
if(btye = send(client_sockfd,&char_send,1,0) == -1)
{
perror("send");
exit(EXIT_FAILURE);
}
shutdown(client_sockfd,2);
shutdown(server_sockfd,2);
return 0;
}
C代码
#include <sys/types.h>
#include <sys/socket.h>
#include <stdio.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <stdlib.h>
int main()
{
int sockfd;
int len;
struct sockaddr_in address;
int result;
int i,byte;
char char_recv,char_send;
if((sockfd = socket(AF_INET,SOCK_STREAM,0)) == -1)
{
perror("socket");
exit(EXIT_FAILURE);
}
address.sin_family = AF_INET;
address.sin_addr.s_addr = inet_addr("127.0.0.1");
address.sin_port = 8080;
len = sizeof(address);
if((result = connect(sockfd,(struct sockaddr *)&address,len)) == -1)
{
perror("connect");
exit(EXIT_FAILURE);
}
printf("please enter the context you want to send to server :");
scanf("%c",&char_send);
if(byte = send(sockfd,&char_send,1,0) == -1)
{
perror("send");
exit(EXIT_FAILURE);
}
if(byte = recv(sockfd,&char_recv,1,0) == -1)
{
perror("recv");
exit(EXIT_FAILURE);
}
printf("receive from server %c\n",char_recv);
close(sockfd);
exit(0);
}
server.c
C代码
#include <sys/types.h>
#include <sys/socket.h>
#include <stdio.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <stdlib.h>
char dict(char temp)
{
if(temp == 'Z')
{
return 'A';
}
return temp+1;
}
int main()
{
int server_sockfd,client_sockfd;
int server_len,client_len;
struct sockaddr_in server_address;
struct sockaddr_in client_address;
int i,btye;
char char_recv,char_send;
server_address.sin_family = AF_INET;
server_address.sin_addr.s_addr = inet_addr("127.0.0.1");
server_address.sin_port = 8080;
server_len = sizeof(server_address);
server_sockfd = socket(AF_INET,SOCK_STREAM,0);
bind(server_sockfd,(struct sockaddr *)&server_address,server_len);
listen(server_sockfd,5);
printf("server waiting for connect\n");
client_len = sizeof(client_address);
client_sockfd = accept(server_sockfd,(struct sockaddr *)&client_address,(socklen_t *)&client_len);
if(btye = recv(client_sockfd,&char_recv,1,0) == -1)
{
perror("recv");
exit(EXIT_FAILURE);
}
printf("receive from client is %c\n",char_recv);
char_send = dict(char_recv);
if(btye = send(client_sockfd,&char_send,1,0) == -1)
{
perror("send");
exit(EXIT_FAILURE);
}
shutdown(client_sockfd,2);
shutdown(server_sockfd,2);
return 0;
}
相关文章推荐
- ARM环境中的c语言socket进程通信-转
- C语言两种方法实现进程间 socket 通信
- 【C语言】【unix c】两个进程通过消息队列实现进程间的通信
- 【C语言】【unix c】如何使用管道实现两个进程间的通信
- C语言两种方法实现进程间 socket 通信
- Delphi 两个应用程序(进程)之间的通信
- 通过共享内存,利用循环队列实现两个进程A,B之间的通信
- linux本地进程间socket通信是否经过网卡?
- Socket进程通信机制及应用
- 在 Linux 上实现基于 Socket 的多进程实时通信
- python socket编程之双方相互通信简单实例
- VC++中进程间相互通信的十一种方法
- 嵌入式web服务器后台cgi使用socket与其他进程进行通信的源码
- VC++中进程间相互通信的十一种方法
- 在两个不同的程序实例中发送消息,相互通信
- LINUX 实现两个进程之间的通信
- 进程通信网络通信socket详细
- Android跨进程通信之Socket
- 进程通信(socket)
- Linux 文件锁flock 实现两个进程相互监听存活状态