#include <stdio.h>
|
#include <stdlib.h>
|
#include <sys/socket.h>
|
#include <sys/un.h>
|
#include <unistd.h>
|
#include <sys/stat.h>
|
#include <fcntl.h>
|
#include <string.h>
|
#include <stdio.h>
|
#include <errno.h>
|
#include "ipc_msg.h"
|
|
int basic_create_ipc_client(char * unix_domain_path, memfd_data_st * ptr_memfd_data)
|
{
|
int fd;
|
int connect_fd;
|
struct sockaddr_un srv_addr;
|
char snd_buf[MAX_LEN] = {0};
|
char rcv_buf[MAX_LEN] = {0};
|
int ret;
|
int i;
|
char *fd_path;
|
int rcv_num = 0;
|
|
connect_fd = socket(AF_UNIX, SOCK_STREAM, 0);
|
|
if(connect_fd < 0)
|
{
|
perror("client create socket failed");
|
return 1;
|
}
|
srv_addr.sun_family = AF_UNIX;
|
|
if(unix_domain_path == NULL)
|
{
|
unix_domain_path = UNIX_DOMAIN;
|
}
|
|
strcpy(srv_addr.sun_path, unix_domain_path);
|
ret = connect(connect_fd, (struct sockaddr*)&srv_addr, sizeof(srv_addr));
|
if(ret == -1)
|
{
|
perror("connect to server failed!");
|
close(connect_fd);
|
unlink(UNIX_DOMAIN);
|
return 1;
|
}
|
|
printf("connect to server path:%s success!", srv_addr.sun_path);
|
|
//memset(rcv_buf, 0, sizeof(rcv_buf));
|
//int rcv_num = read(connect_fd, rcv_buf, sizeof(rcv_buf));
|
//memcpy(&memfd_data, rcv_buf, sizeof(memfd_data_st));
|
|
memset(snd_buf, 0, 256);
|
strcpy(snd_buf, HELLO_MSG);
|
printf("sizeof(snd_buf): %ld\n", sizeof(snd_buf));
|
|
printf("send data to server... ...\n");
|
write(connect_fd, snd_buf, sizeof(snd_buf));
|
printf("send end!\n");
|
|
memset(rcv_buf, 0, sizeof(rcv_buf));
|
rcv_num = read(connect_fd, rcv_buf, sizeof(rcv_buf));
|
if(rcv_num == 0)
|
{
|
close(connect_fd);
|
return 0;
|
}
|
memcpy(ptr_memfd_data, rcv_buf, rcv_num);
|
|
close(connect_fd);
|
}
|