PracticeDev/study_clang/ipc_test/ipc_unix_socket_client.c

55 lines
1.5 KiB
C

/*************************************************************************
> File Name : ipc_unix_socket_client.c
> Author : TL Song
> EMail : songtianlun@frytea.com
> Created Time : Thu 31 Dec 2020 08:55:49 AM CST
************************************************************************/
#include <unistd.h>
#include <stdio.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <sys/un.h>
const char path[]="/tmp/server";
int main(){
int server_fd,client_fd;
struct sockaddr_un server_addr, client_addr;
//unlink(path);
server_fd = socket(AF_UNIX,SOCK_STREAM,0);
if(server_fd == -1){
perror("socket: ");
exit(1);
}
server_addr.sun_family=AF_UNIX;
strcpy(server_addr.sun_path,path);
if(connect(server_fd,(struct sockaddr *)&server_addr,sizeof(server_addr)) == -1){
perror("connect: ");
exit(1);
}
char recv[105],send[105];
int i;
puts("the client started, please enter your message: ");
while(1){
memset(send,0,sizeof(send));
if(read(STDIN_FILENO,send,105)==-1){
perror("read: ");
break;
}
if(write(server_fd,send,strlen(send))==-1){
perror("send: ");
break;
}
if(strcmp(send,"end\n")==0){
printf("the client process end.\n");
break;
}
memset(recv,0,sizeof(recv));
if(read(server_fd,recv,105)==-1){
perror("recv: ");
break;
}
printf("recv message from server: %s",recv);
}
close(server_fd);
}