-
Notifications
You must be signed in to change notification settings - Fork 0
/
single_client.c
executable file
·78 lines (59 loc) · 1.64 KB
/
single_client.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <string.h>
#include <stdlib.h>
#include <errno.h>
/* REPLACE with your server machine name*/
#define HOST "127.0.0.1"
#define DIRSIZE 8192
#define MAX_PORT 4
extern int errno;
void log_stuff(const char *message, int parameter)
{
char msg[BUFSIZ];
memset(msg, 0, sizeof(msg));
sprintf(msg, "echo %s %d >> /tmp/error.txt", message, parameter);
system(msg);
}
void populate_sock(int *sock, struct sockaddr_in *sin, const unsigned short int port)
{
char hostname[100];
strcpy(hostname,HOST);
if ((*sock = socket(AF_INET, SOCK_DGRAM, 0)) == -1) {
perror("socket");
exit(EXIT_FAILURE);
}
memset(sin, 0, sizeof(*sin));
sin->sin_family = AF_INET;
sin->sin_addr.s_addr = inet_addr(hostname);
sin->sin_port = htons(port);
}
int main(int argc, char **argv)
{
char dir[BUFSIZ];
int sd,j=0;
struct sockaddr_in sin;
int addrlen;
int status;
const unsigned short int port;
sscanf(argv[1], "%x", &port);
addrlen = sizeof(sin);
populate_sock(&sd,&sin, port);
sprintf(dir, "%s%d",argv[1],j);
/* send a message to the server PORT on machine HOST */
if ((status = sendto(sd, dir, strlen(dir), 0, (struct sockaddr *)&sin, addrlen))== -1) {
printf("%s %d",strerror(errno), __LINE__);
exit(1);
}
printf("%s,%d\n","status=", status);
/* send a message to the server PORT on machine HOST */
if ((status = sendto(sd, "EOM", strlen("EOM"), 0, (struct sockaddr *)&sin, addrlen))== -1) {
printf("%s %d",strerror(errno), __LINE__);
exit(1);
}
printf("%s,%d\n","status=", status);
return 0;
}