C语言两个进程相互通信—socket
程序员文章站
2022-06-14 16:07:22
...
直接贴代码吧
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; }
推荐阅读
-
一起talk C栗子吧(第八十六回:C语言实例--使用信号进行进程间通信三)
-
一起talk C栗子吧(第九十七回:C语言实例--使用消息队列进行进程间通信一)
-
一起talk C栗子吧(第九十八回:C语言实例--使用消息队列进行进程间通信二)
-
一起talk C栗子吧( 第一百五十回:C语言实例--socket通信接口二)
-
windows用Code::Blocks实现socket通信(C语言 不死循环)
-
一起talk C栗子吧(第九十六回:C语言实例--使用共享内存进行进程间通信二)
-
一起talk C栗子吧(第一百四十七回:C语言实例--socket通信一)
-
一起talk C栗子吧(第一百五十四回:C语言实例--socket通信地址系统调用二)
-
一起talk C栗子吧(第一百五十三回:C语言实例--socket通信地址系统调用一)
-
一起talk C栗子吧(第八十三回:C语言实例--进程间通信概述)