]> rtime.felk.cvut.cz Git - frescor/frsh-forb.git/blob - src/fwp/fwp/tests/unixsocktest/unixclient.c
Add preliminary configuration for RTEMS build
[frescor/frsh-forb.git] / src / fwp / fwp / tests / unixsocktest / unixclient.c
1 #include <sys/types.h>
2 #include <sys/socket.h>
3 #include <stdio.h>
4 #include <sys/un.h>
5 #include <unistd.h>
6 #include <errno.h>
7
8 #define SOCKET_PATH_SERVER "server_socket"
9
10 int main(int argc, char *argv[])
11 {
12         int sockfd;
13         struct sockaddr_un server_addr;
14         int result;
15         char msg[20];
16         char buf[20];
17         unsigned int msglen;
18         
19         if (argc < 2) {
20                 printf("%s: Missing string parameter\n",argv[0]);
21                 return -1;
22         }
23
24         msglen = strlen(argv[1]) + 1;
25         //printf("msg= %lu \n", sizeof(msg));
26
27         if (msglen > sizeof(msg))
28                 msglen = sizeof(msg);
29
30         strncpy(msg, argv[1], msglen);
31
32         /*  Create a socket for the client.  */
33
34         sockfd = socket(AF_UNIX, SOCK_STREAM, 0);
35
36         /*  Name the socket, as agreed with the server.  */
37
38         server_addr.sun_family = AF_UNIX;
39         strcpy(server_addr.sun_path, SOCKET_PATH_SERVER);
40         
41         /*  Now connect our socket to the server's socket.  */
42
43         result = connect(sockfd, (struct sockaddr *)&server_addr,
44                          sizeof(server_addr));
45
46         if(result == -1) {
47                 return -1;
48         }
49
50         while (1) {
51                 while (send(sockfd, msg, msglen, 0) == -1){
52                         if (errno == EINTR) continue;
53                         goto out_err;
54                 }
55                 
56                 while (recv(sockfd, buf, sizeof(buf),0) == -1){
57                         if (errno == EINTR) continue;
58                         goto out_err;           
59                 }       
60         
61                 printf("sent=%s received=%s\n", msg,buf);
62         }       
63
64         unlink(SOCKET_PATH_SERVER);
65         close(sockfd);
66         return 0;
67 out_err:
68         unlink(SOCKET_PATH_SERVER);
69         close(sockfd);
70         return -1;      
71 }