六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 24|回复: 0

C语言两个进程相互通信—socket

[复制链接]

升级  30%

3

主题

3

主题

3

主题

童生

Rank: 1

积分
15
 楼主| 发表于 2013-1-26 12:32:25 | 显示全部楼层 |阅读模式
直接贴代码吧
client.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
 
#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;}
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表