summaryrefslogtreecommitdiff
path: root/client.c
blob: a97d810e597c06c9a0d660f17ee220b6eaa429b7 (plain)
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
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <string.h>
#include <sys/un.h>

#define SOCKETPATH "/home/flo/uds_socket"

void die(const char* msg){perror(msg); exit(1);}
void suicide(const char* msg){ fprintf(stderr, "%s\n", msg); exit(1); }

unsigned char buffer[67108864]; // must be unsigned. because reasons -_-

int main()
{

	struct sockaddr_un my_sockaddr;
	my_sockaddr.sun_family=AF_UNIX;
	strcpy(my_sockaddr.sun_path, SOCKETPATH);
	int sockaddrlen = strlen(my_sockaddr.sun_path) + sizeof(my_sockaddr.sun_family);

	int sockfd = socket(AF_UNIX, SOCK_STREAM, 0);
	if (sockfd == -1) die("socket");


	if (connect(sockfd, (struct sockaddr*) &my_sockaddr, sockaddrlen) == -1)
		die("connect");
	
	write(sockfd,"get\n",4);

	printf("%i\n",read(sockfd, buffer, 4));
	printf("%x%x%x%x\n",buffer[0],buffer[1],buffer[2],buffer[3]);
	int framelen = ((buffer[0]*256+buffer[1])*256+buffer[2])*256+buffer[3];
	printf("framelen is %i\n", framelen);
	if (framelen > sizeof(buffer)) suicide("buffer too small");
	read(sockfd, buffer, framelen);

	printf("done reading\n");

	read(sockfd, buffer, 123);

	close(sockfd);
	return 0;
}