Skip to content

Instantly share code, notes, and snippets.

@Tasssadar
Created April 14, 2014 18:48
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Tasssadar/10673608 to your computer and use it in GitHub Desktop.
Save Tasssadar/10673608 to your computer and use it in GitHub Desktop.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <unistd.h>
#include <fcntl.h>
#define PORT 33000
#define SERVER "aranka-pi"
static void sendStr(int sd, const char *str)
{
if(write(sd, str, strlen(str)+1) < 0)
{
perror("write() failed\n");
}
}
static void sendChar(int sd, char c)
{
if(write(sd, &c, 1) < 0)
{
perror("write() failed\n");
}
}
int main()
{
int sd, rc;
struct sockaddr_in serveraddr;
struct hostent *hostp;
char buff[128]; // read buff
// Udelani socketu
sd = socket(AF_INET, SOCK_STREAM, 0);
if(sd < 0)
{
perror("socket() error\n");
return 255;
}
// vyplneni infa o serveru
memset(&serveraddr, 0, sizeof(struct sockaddr_in));
serveraddr.sin_family = AF_INET;
serveraddr.sin_port = htons(PORT);
hostp = gethostbyname(SERVER); // resolve jmena serveru
if(hostp == NULL)
{
perror("Failed to resolve "SERVER"\n");
return 255;
}
memcpy(&serveraddr.sin_addr, hostp->h_addr, sizeof(serveraddr.sin_addr));
// connect na serveraddr
rc = connect(sd, (struct sockaddr*)&serveraddr, sizeof(serveraddr));
if(rc < 0)
{
perror("Failed to connect()\n");
return 255;
}
// nastaveni nonblocking
fcntl(sd, F_SETFL, fcntl(sd, F_GETFL, 0) | O_NONBLOCK);
// zapnout gui
sendChar(sd, 'h');
sendChar(sd, 'a');
sleep(60);
sendChar(sd, 's');
while(1)
{
while((rc = read(sd, buff, sizeof(buff))) > 0)
{
if(strncmp(buff, "bear ", 5) == 0)
{
int x, y, w, h;
if(sscanf(buff, "bear %d %d %d %d\n", &x, &y, &w, &h) == 4)
printf("Bear rectangle: [%d; %d] %dx%d\n", x, y, w, h);
}
}
usleep(50000);
}
close(sd);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment