#include <stdio.h>
#include <errno.h>
#include <sys/socket.h>
//#include <resolv.h>
#include <arpa/inet.h>
#include <pthread.h>
#include <stdlib.h>
#include <strings.h>
#include <unistd.h>
#define ADRRESS "127.0.0.1"
#define PORT 9999
/*void receive_tcp(int clientfd)
{
char buffer1[7];
//char *buffer2;
int n, i;
n = read(clientfd, buffer1, sizeof(buffer1));
for(i=0;i<n;i++)
{
printf("%c", buffer1[i]);
}
}*/
int main()
{
int sock;
struct sockaddr_in s1;
char buffer1[7];
int n, i;
if ((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0)
{
printf("Erro ao criar socket."); }
bzero(&s1, sizeof(s1));
s1.sin_family = AF_INET;
s1.sin_port = htons(PORT);
s1.sin_addr.s_addr = INADDR_ANY;
printf("A ligar ao socket...");
if (bind(sock, (struct sockaddr*)&s1, sizeof(s1)) != 0)
{
printf("Erro ao ligar socket."); }
printf("A configurar socket...");
if (listen(sock, 10) != 0)
{
printf("Erro ao configurar socket."); }
printf("A entrar no ciclo...");
while(1)
{
int clientfd;
struct sockaddr_in client_addr;
size_t addrlen= (int) sizeof(client_addr);
//pthread_t thread1;
printf("À espera de uma nova ligação..."); clientfd = accept(sock, (struct sockaddr*) &client_addr, &addrlen);
n = read(clientfd, buffer1, sizeof(buffer1));
for(i=0;i<n;i++)
{
}
//pthread_create(&thread1, 0, receive_tcp, clientfd);
//pthread_detach(thread1);
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxlcnJuby5oPgojaW5jbHVkZSA8c3lzL3NvY2tldC5oPgovLyNpbmNsdWRlIDxyZXNvbHYuaD4KI2luY2x1ZGUgPGFycGEvaW5ldC5oPgojaW5jbHVkZSA8cHRocmVhZC5oPgojaW5jbHVkZSA8c3RkbGliLmg+CiNpbmNsdWRlIDxzdHJpbmdzLmg+CiNpbmNsdWRlIDx1bmlzdGQuaD4KCiNkZWZpbmUgQURSUkVTUyAiMTI3LjAuMC4xIgojZGVmaW5lIFBPUlQgOTk5OQoKCi8qdm9pZCByZWNlaXZlX3RjcChpbnQgY2xpZW50ZmQpCnsKICAgIGNoYXIgYnVmZmVyMVs3XTsKICAgIC8vY2hhciAqYnVmZmVyMjsKICAgIGludCBuLCBpOwoKICAgIG4gPSByZWFkKGNsaWVudGZkLCBidWZmZXIxLCBzaXplb2YoYnVmZmVyMSkpOwoKICAgIGZvcihpPTA7aTxuO2krKykKICAgIHsKICAgICAgICBwcmludGYoIiVjIiwgYnVmZmVyMVtpXSk7CiAgICB9Cn0qLwoKaW50IG1haW4oKQp7CiAgICBpbnQgc29jazsKICAgIHN0cnVjdCBzb2NrYWRkcl9pbiBzMTsKICAgIGNoYXIgYnVmZmVyMVs3XTsKICAgIGludCBuLCBpOwoKICAgIHByaW50ZigiQSBjcmlhciBzb2NrZXQuLi4iKTsKCiAgICBpZiAoKHNvY2sgPSBzb2NrZXQoQUZfSU5FVCwgU09DS19TVFJFQU0sIDApKSA8IDApCiAgICB7CiAgICAgICAgcHJpbnRmKCJFcnJvIGFvIGNyaWFyIHNvY2tldC4iKTsKICAgICAgICBleGl0KDEpOwogICAgfQoKICAgIGJ6ZXJvKCZzMSwgc2l6ZW9mKHMxKSk7CiAgICBzMS5zaW5fZmFtaWx5ID0gQUZfSU5FVDsKICAgIHMxLnNpbl9wb3J0ID0gaHRvbnMoUE9SVCk7CiAgICBzMS5zaW5fYWRkci5zX2FkZHIgPSBJTkFERFJfQU5ZOwoKICAgIHByaW50ZigiQSBsaWdhciBhbyBzb2NrZXQuLi4iKTsKCiAgICBpZiAoYmluZChzb2NrLCAoc3RydWN0IHNvY2thZGRyKikmczEsIHNpemVvZihzMSkpICE9IDApCiAgICB7CiAgICAgICAgcHJpbnRmKCJFcnJvIGFvIGxpZ2FyIHNvY2tldC4iKTsKICAgICAgICBleGl0KDEpOwogICAgfQoKICAgIHByaW50ZigiQSBjb25maWd1cmFyIHNvY2tldC4uLiIpOwoKICAgIGlmIChsaXN0ZW4oc29jaywgMTApICE9IDApCiAgICB7CiAgICAgICAgcHJpbnRmKCJFcnJvIGFvIGNvbmZpZ3VyYXIgc29ja2V0LiIpOwogICAgICAgIGV4aXQoMSk7CiAgICB9CiAgICBwcmludGYoIkEgZW50cmFyIG5vIGNpY2xvLi4uIik7CgogICAgd2hpbGUoMSkKICAgIHsKICAgICAgICBpbnQgY2xpZW50ZmQ7CiAgICAgICAgc3RydWN0IHNvY2thZGRyX2luIGNsaWVudF9hZGRyOwogICAgICAgIHNpemVfdCBhZGRybGVuPSAoaW50KSBzaXplb2YoY2xpZW50X2FkZHIpOwoKICAgICAgICAvL3B0aHJlYWRfdCB0aHJlYWQxOwoKICAgICAgICBwcmludGYoIsOAIGVzcGVyYSBkZSB1bWEgbm92YSBsaWdhw6fDo28uLi4iKTsKICAgICAgICBjbGllbnRmZCA9IGFjY2VwdChzb2NrLCAoc3RydWN0IHNvY2thZGRyKikgJmNsaWVudF9hZGRyLCAmYWRkcmxlbik7CiAgICAgICAgbiA9IHJlYWQoY2xpZW50ZmQsIGJ1ZmZlcjEsIHNpemVvZihidWZmZXIxKSk7CgogICAgICAgIGZvcihpPTA7aTxuO2krKykKICAgICAgICB7CiAgICAgICAgICAgIHByaW50ZigiJWMiLCBidWZmZXIxW2ldKTsKICAgICAgICB9CgogICAgICAgIC8vcHRocmVhZF9jcmVhdGUoJnRocmVhZDEsIDAsIHJlY2VpdmVfdGNwLCBjbGllbnRmZCk7ICAgICAgIAogICAgICAgIC8vcHRocmVhZF9kZXRhY2godGhyZWFkMSk7CgogICAgfQogICAgcmV0dXJuIDA7Cn0=