PracticeDev/study_clang/ipc_test/unix_socket/mult_udp/point1.cpp

139 lines
3.9 KiB
C++
Raw Normal View History

2022-12-20 17:31:11 +08:00
/*************************************************************************
> File Name: point1.cpp
> Author: TianLun Song
> Mail: songtianlun@frytea.com
> Blog: https://blog.frytea.com
> Created Time: Wed 13 Jan 2021 09:53:06 AM CST
************************************************************************/
#include "point.h"
void *t_server_1(void *args)
{
char msg_buf[1024];
int iMsgIndex = 0;
printf("Start UDP Server 1.\n");
socket_fd_server_1 = socket(AF_UNIX,SOCK_DGRAM,0);
printf("server 1 fd %d after socket.\n", socket_fd_server_1);
if (socket_fd_server_1 < 0)
{
perror("server 1 socket");
return NULL;
}
if (access(server_addr1.sun_path,0) != -1)
{
unlink(server_addr1.sun_path);
}
if (bind(socket_fd_server_1,(sockaddr*)&server_addr1,sizeof server_addr1 ) < 0)
{
perror("server 1 bind");
return NULL;
}
printf("server 1 fd %d after bind.\n", socket_fd_server_1);
while (1)
{
memset(msg_buf,'\0',1024);
int rsize = ipc_udp_server_recv(socket_fd_server_1,msg_buf,sizeof(msg_buf),0);
if (rsize < 0)
{
perror("server 1 recv error!");
sleep(1);
continue;
}
printf("UN_UDP server 1, fd: %d,receive a msg from %s :%s\n",socket_fd_server_1 , client_addr1.sun_path, msg_buf);
snprintf(msg_buf,sizeof msg_buf, "OK,I got it! No.%d",iMsgIndex++);
int ssize = ipc_udp_server_send(socket_fd_server_1, msg_buf, sizeof msg_buf,0);
if (ssize < 0)
{
perror("server 1 send error!");
sleep(1);
continue;
}
sleep(1);
}
if (close(socket_fd_server_1) < 0)
{
perror("server 1 close socket");
return NULL;
}
return NULL;
}
void *t_client_2(void *args)
{
printf("Start UDP Client 2.\n");
char msg_buf[1024];
int iMsgIndex = 0;
memset(&client_addr2,0,sizeof(client_addr2));
client_addr2.sun_family = AF_UNIX;
strcpy(client_addr2.sun_path,client2_file);
socket_fd_client_2 = socket(AF_UNIX,SOCK_DGRAM,0);
printf("client 2 fd %d after socket.\n", socket_fd_client_2);
if (socket_fd_client_2 < 0)
{
perror("client 2 socket");
return NULL;
}
if (access(client_addr2.sun_path,0) != -1)
{
remove(client_addr2.sun_path);
}
if(bind(socket_fd_client_2,(sockaddr*)&client_addr2,sizeof(client_addr2)) < 0)
{
perror("client 2 bind");
return NULL;
}
printf("client 2 fd %d after bind.\n", socket_fd_client_2);
while(1)
{
snprintf(msg_buf,sizeof msg_buf, "I'm UN_UDP client 2, NO.%d.", iMsgIndex++);
int ssize = ipc_udp_client_send(socket_fd_client_2, msg_buf, sizeof msg_buf, 0);
if (ssize < 0)
{
printf("send to %s error.\n", server_addr2.sun_path);
perror("client 2 sendto");
sleep(1);
continue;
}
int rsize = ipc_udp_client_recv(socket_fd_client_2, msg_buf, sizeof(msg_buf), 0);
if (rsize < 0)
{
perror("client 2 recv");
sleep(1);
continue;
}
printf("UN_UDP client 2, fd: %d,receive a msg :%s\n",socket_fd_client_2 , msg_buf);
sleep(1);
}
if (close(socket_fd_client_2) < 0)
{
perror("client 2 close");
return NULL;
}
return NULL;
}
int main(int argc,char** argv)
{
pthread_t tid[2];
int iRet1, iRet2 = 0;
init_socket();
iRet1 = pthread_create(&tid[0], NULL, t_server_1, NULL);
if(iRet1 != 0){
printf("pthread_create 1 error: error_code = %d\n", iRet1);
}
iRet2 = pthread_create(&tid[1], NULL, t_client_2, NULL);
if(iRet2 != 0){
printf("pthread_create 2 error: error_code = %d\n", iRet2);
}
while(1)
{
sleep(1);
}
pthread_exit(NULL);
return 0;
}