|
1 | | -#include <sys/socket.h> |
2 | | -#include <sys/un.h> |
3 | | -#include <stdio.h> |
4 | | -#include <stdlib.h> |
5 | | -#include <unistd.h> |
| 1 | +#include "header.h" |
| 2 | + |
| 3 | +int main(int argc, char* argv[]) { |
| 4 | + char Buf[100] = { 0 }; |
| 5 | + ssize_t BytesRecvd = 0; |
| 6 | + struct sockaddr_un clientAddr = { 0 }; |
| 7 | + struct sockaddr_un serverAddr = { 0 }; |
| 8 | + struct sockaddr_un address = { 0 }; |
| 9 | + char serverAddress[100] = { 0 }; |
| 10 | + int serverFd = 0, rc = 0, clientFd = 0; |
| 11 | + int acceptFd = 0; |
| 12 | + socklen_t addrLen = 0; |
| 13 | + |
| 14 | + if ((clientFd = socket(AF_UNIX, SOCK_STREAM, 0)) == -1) { |
| 15 | + perror("clientFd socket error"); |
| 16 | + goto ErrorExit; |
| 17 | + } |
| 18 | + |
| 19 | + clientAddr.sun_family = AF_UNIX; |
| 20 | + strncpy(clientAddr.sun_path, CLIENT_SOCKET, sizeof(clientAddr.sun_path) - 1); |
| 21 | + if (bind(clientFd, (struct sockaddr*)&clientAddr, sizeof(clientAddr)) == -1) { |
| 22 | + perror("server bind error"); |
| 23 | + goto ErrorExit; |
| 24 | + } |
| 25 | + |
| 26 | + addrLen = sizeof(clientAddr); |
| 27 | + if (getsockname(clientFd, (struct sockaddr*)&clientAddr, &addrLen) == -1) { |
| 28 | + perror("getsockname(client)"); |
| 29 | + goto ErrorExit; |
| 30 | + } |
| 31 | + |
| 32 | + printf("getsockname returned: %s, addressize: %d\n", clientAddr.sun_path, addrLen); |
| 33 | + serverAddr.sun_family = AF_UNIX; |
| 34 | + strncpy(serverAddr.sun_path, SERVER_SOCKET, sizeof(serverAddr.sun_path)); |
| 35 | + printf("client: connecting to %s\n", SERVER_SOCKET); |
| 36 | + if (connect(clientFd, (struct sockaddr*)&serverAddr, sizeof(serverAddr)) == -1) { |
| 37 | + perror("connect error"); |
| 38 | + goto ErrorExit; |
| 39 | + } |
| 40 | + |
| 41 | + printf("client: connected to the server\n"); |
| 42 | + addrLen = sizeof(clientAddr); |
| 43 | + if (getpeername(clientFd, (struct sockaddr*)&clientAddr, &addrLen) == -1) { |
| 44 | + perror("getpeername(client)"); |
| 45 | + goto ErrorExit; |
| 46 | + } |
| 47 | + |
| 48 | + printf("getpeername returned: %s, addressize: %d\n", clientAddr.sun_path, addrLen); |
| 49 | + if ((BytesRecvd = recv(clientFd, Buf, sizeof(Buf), 0)) == -1) { |
| 50 | + perror("recv"); |
| 51 | + goto ErrorExit; |
| 52 | + } |
| 53 | + |
| 54 | + printf("received: %zd bytes, %s\n", BytesRecvd, Buf); |
6 | 55 |
|
7 | | -char *server_full_path = "server.sock"; |
8 | | -char *client_full_path = "client.sock"; |
9 | | - |
10 | | -int main(int argc, char *argv[]) { |
11 | | - char Buf[100]; |
12 | | - ssize_t BytesRecvd; |
13 | | - struct sockaddr_un clientAddr = {0}; |
14 | | - struct sockaddr_un serverAddr = {0}; |
15 | | - struct sockaddr_un address; |
16 | | - char serverAddress[100] = {0}; |
17 | | - int serverFd, rc, clientFd; |
18 | | - int acceptFd; |
19 | | - socklen_t addrLen; |
20 | | - |
21 | | - if ((clientFd = socket(AF_UNIX, SOCK_STREAM, 0)) == -1) { |
22 | | - perror("clientFd socket error"); |
23 | | - goto ErrorExit; |
24 | | - } |
25 | | - |
26 | | - memset(&clientAddr, 0, sizeof(clientAddr)); |
27 | | - clientAddr.sun_family = AF_UNIX; |
28 | | - strncpy(clientAddr.sun_path, client_full_path, sizeof(clientAddr.sun_path)-1); |
29 | | - if (bind(clientFd, (struct sockaddr*)&clientAddr, sizeof(clientAddr)) == -1) { |
30 | | - perror("server bind error"); |
31 | | - goto ErrorExit; |
32 | | - } |
33 | | - |
34 | | - addrLen = sizeof(clientAddr); |
35 | | - memset(&clientAddr, 0, sizeof(clientAddr)); |
36 | | - if (getsockname(clientFd, (struct sockaddr*)&clientAddr, &addrLen) == -1) { |
37 | | - perror("getsockname(client)"); |
38 | | - goto ErrorExit; |
39 | | - } |
40 | | - |
41 | | - printf("getsockname returned: %s, addressize: %d\n", clientAddr.sun_path, addrLen); |
42 | | - memset(&serverAddr, 0, sizeof(serverAddr)); |
43 | | - serverAddr.sun_family = AF_UNIX; |
44 | | - strncpy(serverAddr.sun_path, server_full_path, sizeof(serverAddr.sun_path)); |
45 | | - printf("client: connecting to %s\n", serverAddress); |
46 | | - if (connect(clientFd, (struct sockaddr*)&serverAddr, sizeof(serverAddr)) == -1) { |
47 | | - perror("connect error"); |
48 | | - goto ErrorExit; |
49 | | - } |
50 | | - |
51 | | - printf("client: connected to the server\n"); |
52 | | - addrLen = sizeof(clientAddr); |
53 | | - memset(&clientAddr, 0, sizeof(clientAddr)); |
54 | | - if (getpeername(clientFd, (struct sockaddr*)&clientAddr, &addrLen) == -1) { |
55 | | - perror("getpeername(client)"); |
56 | | - goto ErrorExit; |
57 | | - } |
58 | | - |
59 | | - printf("getpeername returned: %s, addressize: %d\n", clientAddr.sun_path, addrLen); |
60 | | - memset(Buf, 0, sizeof(Buf)); |
61 | | - if ((BytesRecvd = recv(clientFd, Buf, sizeof(Buf), 0)) == -1) { |
62 | | - perror("recv"); |
63 | | - goto ErrorExit; |
64 | | - } |
65 | | - |
66 | | - printf("received: %zd bytes, %s\n", BytesRecvd, Buf); |
67 | | - |
68 | 56 | ErrorExit: |
69 | | - unlink(client_full_path); |
70 | | - return 0; |
| 57 | + unlink(CLIENT_SOCKET); |
| 58 | + return 0; |
71 | 59 | } |
0 commit comments