C套接字写入次数太多

C套接字写入次数太多,c,sockets,read-write,C,Sockets,Read Write,在用户输入数据之后,它会写出在数据刚刚输入之前输入的一部分数据,如果这有意义的话?我只包含了一个片段,但有人知道为什么它会多次回复吗 #include<stdio.h> #include<string.h> #include<stdlib.h> #include<sys/socket.h> #include<arpa/inet.h> //inet_addr #include<unistd.h> // write #incl

在用户输入数据之后,它会写出在数据刚刚输入之前输入的一部分数据,如果这有意义的话?我只包含了一个片段,但有人知道为什么它会多次回复吗

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<sys/socket.h>
#include<arpa/inet.h> //inet_addr
#include<unistd.h> // write

#include<pthread.h> // For Threading

#include<wiringPi.h>
void *connection_handler(void *);
void lightLED(int pin,int status);
int maxConnections = 1;
int totalConnections = 0;
int main(int argc , char *argv[])
{
    int socket_desc , new_socket , c, *new_sock;
    struct sockaddr_in server , client;
    char *message;     
    //Create socket
    socket_desc = socket(AF_INET , SOCK_STREAM , 0);
    if (socket_desc == -1)
    {
        printf("Could not create socket");
    }

    //Prepare the sockaddr_in structure
    server.sin_family = AF_INET;
    server.sin_addr.s_addr = INADDR_ANY;
    server.sin_port = htons( 8888 );

    //Bind
    if( bind(socket_desc,(struct sockaddr *)&server , sizeof(server)) < 0)
    {
        puts("bind failed");
    }
    puts("bind done");

    //Listen
    listen(socket_desc , 3);

    //Accept and incoming connection
    puts("Waiting for incoming connections...");
    c = sizeof(struct sockaddr_in);
    while( (new_socket = accept(socket_desc, (struct sockaddr *)&client, (socklen_t*)&c)) )
    {
     if(new_socket > 0)
     {
      if(totalConnections < maxConnections){
      totalConnections++;
     }
      else
      {
       message = "Sorry Maximum Users Reached\n";
       write(new_socket,message,strlen(message));
       puts("Too many Users");
       close(new_socket);
       continue;
      }
    }
     puts("Connection Accepted");
    char *client_ip = inet_ntoa(client.sin_addr);
    int client_port = ntohs(client.sin_port);
    printf("ClientIP:%s\n",client_ip);
     message = "Hello you have been accepted!\n";
     write(new_socket, message , strlen(message));

    pthread_t sniffer_thread;
    new_sock = malloc(1);
    *new_sock = new_socket;

    if(pthread_create( &sniffer_thread, NULL , connection_handler , (void*) new_sock) <0)
    {
     perror("Could not create thread");
    return 1;
    }
    puts("Handler Assigned");
    }

    if (new_socket<0)
    {
        perror("accept failed");
    return 1;
    }
    return 0;
}

void *connection_handler(void *socket_desc)
{
    int sock = *(int*)socket_desc;
    int read_size;
    char *message , client_message[2000];

    message = "Greeting! I am your Connection Handler\n";
    write(sock , message,strlen(message));

    message =  "What do you want to do\n";
    write(sock,message,strlen(message));

    while( (read_size = recv(sock , client_message , 2000 , 0)) > 0)
    {
     write(sock , client_message , strlen(client_message));
     printf("User Entered:%s\n",client_message);
     int pin = client_message[0]-'0';
     int status = client_message[1]-'0';
     lightLED(pin,status);
    }
    if(read_size == 0)
    {
    puts("Client Disconnected\n");
    fflush(stdout);
    totalConnections--;
    }else if(read_size == -1)
    {
     perror("recv Failed");
    }

    free(socket_desc);
    return 0;
}

void lightLED(int pin,int status)
{
    char message;
    if(wiringPiSetup() == -1){
    puts("wiringPi Error");
        exit(1);
    }

    //pinMode(pin,OUTPUT);
    printf("Changing LED Pin- %d Status- %d\n",pin,status);
    //digitalWrite(pin,status);
}
#包括
#包括
#包括
#包括
#包括//inet\u addr
#包括//写入
#包括//用于线程
#包括
void*连接处理程序(void*);
无效发光二极管(内部引脚,内部状态);
int-maxConnections=1;
int totalConnections=0;
int main(int argc,char*argv[])
{
int插座描述,新插座,c,*新插座;
服务器、客户端中的结构sockaddr_;
字符*消息;
//创建套接字
socket\u desc=socket(AF\u INET,SOCK\u STREAM,0);
如果(套接字描述==-1)
{
printf(“无法创建套接字”);
}
//在结构中准备sockaddr_
server.sinu family=AF\u INET;
server.sin\u addr.s\u addr=INADDR\u ANY;
server.sin_port=htons(8888);
//束缚
if(绑定(socket_desc,(struct sockaddr*)&server,sizeof(server))<0
{
看跌期权(“绑定失败”);
}
看跌期权(“绑定完成”);
//听
听(插座描述,3);
//接受和传入连接
puts(“等待传入连接…”);
c=sizeof(结构sockaddr_in);
而((新套接字=接受(套接字描述,(结构sockaddr*)和客户端,(socklen\u t*)和c)))
{
如果(新插槽>0)
{
if(总连接数<最大连接数){
totalConnections++;
}
其他的
{
message=“对不起,已达到最大用户数\n”;
写入(新的_套接字、消息、strlen(消息));
puts(“太多用户”);
关闭(新的_插座);
继续;
}
}
看跌期权(“已接受连接”);
char*client\u ip=inet\u ntoa(client.sin\u addr);
int client_port=ntohs(client.sin_port);
printf(“客户端:%s\n”,客户端\u ip);
message=“您好,您已被接受!\n”;
写入(新的_套接字、消息、strlen(消息));
pthread\u t sniffer\u线程;
新_sock=malloc(1);
*新_插座=新_插座;
if(pthread_create(&sniffer_thread,NULL,connection_handler,(void*)new_sock)第一次通过
我不确定您看到的是什么问题。我已经将您的代码(状态非常好-做得很好;我已经查看了很多代码,其中有许多更糟糕的问题)编译并运行,它似乎对我有效:

$ nc localhost 8888
Connection Accepted
ClientIP:127.0.0.1
Handler Assigned
Hello you have been accepted!
Greeting! I am your Connection Handler
What do you want to do
01
User Entered:01

Changing LED Pin- 0 Status- 1
01
21
User Entered:21

Changing LED Pin- 2 Status- 1
21
31
User Entered:31

Changing LED Pin- 3 Status- 1
31
we wish you a merry Christmas
User Entered:we wish you a merry Christmas

Changing LED Pin- 71 Status- 53
we wish you a merry Christmas
Client Disconnected

$
运行时的代码是:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <pthread.h>
//#include <wiringPi.h>

void *connection_handler(void *);
void lightLED(int pin, int status);

int maxConnections = 1;
int totalConnections = 0;

int main(void)
{
    int socket_desc, new_socket, c, *new_sock;
    struct sockaddr_in server, client;
    char *message;

    socket_desc = socket(AF_INET, SOCK_STREAM, 0);
    if (socket_desc == -1)
    {
        printf("Could not create socket");
        return 1;
    }

    server.sin_family = AF_INET;
    server.sin_addr.s_addr = INADDR_ANY;
    server.sin_port = htons(8888);

    if ( bind(socket_desc, (struct sockaddr *)&server, sizeof(server)) < 0)
    {
        puts("bind failed");
        return 1;
    }
    puts("bind done");

    if (listen(socket_desc, 3) != 0)
    {
        perror("listen() failed");
        return 1;
    }

    puts("Waiting for incoming connections...");
    c = sizeof(struct sockaddr_in);
    while ((new_socket = accept(socket_desc, (struct sockaddr *)&client, (socklen_t*)&c)))
    {
        if (new_socket > 0)
        {
            if (totalConnections < maxConnections)
                totalConnections++;
            else
            {
                message = "Sorry Maximum Users Reached\n";
                write(new_socket, message, strlen(message));
                puts("Too many Users");
                close(new_socket);
                continue;
            }
        }
        puts("Connection Accepted");
        char *client_ip = inet_ntoa(client.sin_addr);
        //int client_port = ntohs(client.sin_port);

        printf("ClientIP:%s\n", client_ip);
        message = "Hello you have been accepted!\n";
        write(new_socket, message, strlen(message));

        pthread_t sniffer_thread;
        new_sock = malloc(1 * sizeof(int));       // Oops!
        if (new_sock == 0) { perror("out of memory"); return 1; }
        *new_sock = new_socket;

        if (pthread_create( &sniffer_thread, NULL, connection_handler, (void*) new_sock) <0)
        {
            perror("Could not create thread");
            return 1;
        }
        puts("Handler Assigned");
    }

    if (new_socket<0)
    {
        perror("accept failed");
        return 1;
    }
    return 0;
}

void *connection_handler(void *socket_desc)
{
    int sock = *(int*)socket_desc;
    int read_size;
    char *message, client_message[2000];

    message = "Greeting! I am your Connection Handler\n";
    write(sock, message, strlen(message));

    message =  "What do you want to do\n";
    write(sock, message, strlen(message));

    while ((read_size = recv(sock, client_message, 2000, 0)) > 0)
    {
        write(sock, client_message, strlen(client_message));
        printf("User Entered:%s\n", client_message);
        int pin = client_message[0]-'0';
        int status = client_message[1]-'0';
        lightLED(pin, status);
    }
    if (read_size == 0)
    {
        puts("Client Disconnected\n");
        fflush(stdout);
        totalConnections--;
    }
    else if (read_size == -1)
    {
        perror("recv Failed");
    }

    free(socket_desc);
    return 0;
}

void lightLED(int pin, int status)
{
//    if (wiringPiSetup() == -1)
//    {
//        puts("wiringPi Error");
//        exit(1);
//    }

    printf("Changing LED Pin- %d Status- %d\n", pin, status);
}

第二关 另一个测试运行-显示非空终止输入的问题:

$ nc localhost 8888
Connection Accepted
ClientIP:127.0.0.1
Hello you have been accepted!
Handler Assigned
Greeting! I am your Connection Handler
What do you want to do
this is a long string - what will you do with it?
User Entered:this is a long string - what will you do with it?

Changing LED Pin- 68 Status- 56
this is a long string - what will you do with it?
01
User Entered:01
s is a long string - what will you do with it?

Changing LED Pin- 0 Status- 1
01
s is a long string - what will you do with it?
Client Disconnected

$
当我用
telnet
而不是
nc
运行它时,我得到了您看到的错误行为,我想:

$ telnet localhost 8888
Trying 127.0.0.1...
Connection Accepted
ClientIP:127.0.0.1
Handler Assigned
Connected to localhost.
Escape character is '^]'.
Hello you have been accepted!
Greeting! I am your Connection Handler
What do you want to do
Would you like a biscuit?
User Entered:Would you like a biscuit?

Changing LED Pin- 39 Status- 63
Would you like a biscuit?
93
User Entered:93
d you like a biscuit?

Changing LED Pin- 9 Status- 3
93
d you like a biscuit?
Intriguing
User Entered:Intriguing
ke a biscuit?

Changing LED Pin- 25 Status- 62
Intriguing
ke a biscuit?
Bye
User Entered:Bye
guing
ke a biscuit?

Changing LED Pin- 18 Status- 73
Bye
guing
ke a biscuit?
User Entered:ye
guing
ke a biscuit?

Changing LED Pin- -44 Status- 73
ye
guing
ke a biscuit?
^CUser Entered:????guing
ke a biscuit?

Changing LED Pin- -49 Status- -60
User Entered:???guing
ke a biscuit?

Changing LED Pin- -49 Status- -53
?guing
ke a biscuit?
User Entered:??guing
ke a biscuit?

...continued attempts with control-C (interrupt)...
...and control-D (EOF) not producing anything useful...

^]
telnet> qConnection closed.
Client Disconnected

$
因此,
telnet
可能误导了您……您的服务器没有任何问题,只是客户端(
telnet
)没有按照您的预期运行

更新代码 与更新的服务器代码的对话:

$ nc localhost 8888
Connection Accepted
ClientIP: 127.0.0.1
Handler Assigned
Hello you have been accepted!
Greetings! I am your Connection Handler
What do you want to do
13
User Entered:13

Changing LED Pin 1 status 3
13
21
User Entered:21

Changing LED Pin 2 status 1
21
elephants?
User Entered:elephants?

Changing LED Pin 53 status 60
elephants?
21
User Entered:21

Changing LED Pin 2 status 1
21
quit 
User Entered:quit

Changing LED Pin 65 status 69
quit
Client Disconnected

$
更新的服务器代码 这个版本关注长度并确保字符串以null结尾

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <pthread.h>
//#include <wiringPi.h>

void *connection_handler(void *);
void lightLED(int pin, int status);
static void write_sock(int sock, const char *msg);

int maxConnections = 1;
int totalConnections = 0;

int main(void)
{
    int socket_desc, new_socket, c, *new_sock;
    struct sockaddr_in server, client;

    socket_desc = socket(AF_INET, SOCK_STREAM, 0);
    if (socket_desc == -1)
    {
        printf("Could not create socket");
        return 1;
    }

    server.sin_family = AF_INET;
    server.sin_addr.s_addr = INADDR_ANY;
    server.sin_port = htons(8888);

    if (bind(socket_desc, (struct sockaddr *)&server, sizeof(server)) < 0)
    {
        puts("bind failed");
        return 1;
    }
    puts("bind done");

    if (listen(socket_desc, 3) != 0)
    {
        perror("listen() failed");
        return 1;
    }

    puts("Waiting for incoming connections...");
    c = sizeof(struct sockaddr_in);
    while ((new_socket = accept(socket_desc, (struct sockaddr *)&client, (socklen_t*)&c)))
    {
        if (new_socket > 0)
        {
            if (totalConnections < maxConnections)
                totalConnections++;
            else
            {
                write_sock(new_socket, "Sorry Maximum Users Reached\n");
                puts("Too many Users");
                close(new_socket);
                continue;
            }
        }

        puts("Connection Accepted");
        char *client_ip = inet_ntoa(client.sin_addr);
        //int client_port = ntohs(client.sin_port);

        printf("ClientIP: %s\n", client_ip);
        write_sock(new_socket, "Hello you have been accepted!\n");

        pthread_t sniffer_thread;
        new_sock = malloc(1 * sizeof(int));       // Oops!
        if (new_sock == 0) { perror("out of memory"); return 1; }
        *new_sock = new_socket;

        if (pthread_create(&sniffer_thread, NULL, connection_handler, (void *)new_sock) < 0)
        {
            perror("Could not create thread");
            return 1;
        }
        puts("Handler Assigned");
    }

    if (new_socket < 0)
    {
        perror("accept failed");
        return 1;
    }
    return 0;
}

// Avoid repetition - use functions!
static void write_sock(int sock, const char *msg)
{
    int len = strlen(msg);
    if (write(sock, msg, len) != len)
    {
        perror("short write on socket");
        exit(1);
    }
}

void *connection_handler(void *socket_desc)
{
    int sock = *(int*)socket_desc;
    int read_size;
    char client_message[2000];

    write_sock(sock, "Greetings! I am your Connection Handler\n");
    write_sock(sock, "What do you want to do\n");

    while ((read_size = recv(sock, client_message, 2000, 0)) > 0)
    {
        client_message[read_size] = '\0';
        write_sock(sock, client_message);
        printf("User Entered:%s\n", client_message);
        int pin = client_message[0]-'0';
        int status = client_message[1]-'0';
        lightLED(pin, status);
    }

    if (read_size == 0)
    {
        puts("Client Disconnected\n");
        fflush(stdout);
        totalConnections--;
    }
    else if (read_size == -1)
    {
        perror("recv Failed");
    }

    free(socket_desc);
    return 0;
}

void lightLED(int pin, int status)
{
//    if (wiringPiSetup() == -1)
//    {
//        puts("wiringPi Error");
//        exit(1);
//    }
    printf("Changing LED Pin %d status %d\n", pin, status);
}

您没有检查任何
write()
调用是否成功;这可能是一个问题。您会被告知刚刚从套接字读取的消息大小;然后使用
strlen()写回消息
来确定大小。但是,您的写入操作不包含空终止符,因此没有理由期望读取的数据包含空终止符,因此您可能会写入各种垃圾。
printf()
也可能在打印垃圾。回显客户端发送的、未更改的、未验证的内容有点奇怪。您不应该等到选中
lightLED()后再响应吗
?啊,好的。是的,原因是这样的,因为我把它作为一个测试,回复发送给它的内容只是为了测试它的效果。你建议如何使用收到的信息?'lightLED()'需要2个整数,正如你所见。
lightLED()
返回一个状态,指示它是否能够执行请求?LED数字是否有效?请求是否有效?回显接收到的数据是否良好;正确回显更好。日志文件(或标准输出,如
printf()
)是一个记录细节的好地方。如果协议允许,回传给客户是可以的-你确实意识到你在设计协议,不是吗?设计自己的协议的一个优点是你可以让它按你想要的方式工作。你最多可以接受2000个字符;你只使用2个字符。这是一个很大的差异。是的,我意识到ed我正在着手制定一种协议……我从一个基本版本开始,没有改变字符数量等。当我尝试将Pin和状态发送到lightLED时,效果很好……但是当我断开连接时,它会向它发送两次信息,这就是为什么我关注这个问题。这是我的“主要功能”吗POSIX pthread?接口看起来可能是。你确定只有一个线程使用给定的套接字吗?如果多个线程使用同一个套接字,可能会有问题。谢谢你,先生。我会试试。我一直在Telnet中使用它,当我在nc中尝试它时,效果很好。你喜欢在Telnet中尝试吗?你可能会看到这一点当您关闭连接客户端时,服务器会收到另外两条消息,编号为-44-44 is
^D-'0'
telnet
正在发送未经解释的控件-D。啊,好的,现在是生命之源..telnet。感谢您的帮助
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <pthread.h>
//#include <wiringPi.h>

void *connection_handler(void *);
void lightLED(int pin, int status);
static void write_sock(int sock, const char *msg);

int maxConnections = 1;
int totalConnections = 0;

int main(void)
{
    int socket_desc, new_socket, c, *new_sock;
    struct sockaddr_in server, client;

    socket_desc = socket(AF_INET, SOCK_STREAM, 0);
    if (socket_desc == -1)
    {
        printf("Could not create socket");
        return 1;
    }

    server.sin_family = AF_INET;
    server.sin_addr.s_addr = INADDR_ANY;
    server.sin_port = htons(8888);

    if (bind(socket_desc, (struct sockaddr *)&server, sizeof(server)) < 0)
    {
        puts("bind failed");
        return 1;
    }
    puts("bind done");

    if (listen(socket_desc, 3) != 0)
    {
        perror("listen() failed");
        return 1;
    }

    puts("Waiting for incoming connections...");
    c = sizeof(struct sockaddr_in);
    while ((new_socket = accept(socket_desc, (struct sockaddr *)&client, (socklen_t*)&c)))
    {
        if (new_socket > 0)
        {
            if (totalConnections < maxConnections)
                totalConnections++;
            else
            {
                write_sock(new_socket, "Sorry Maximum Users Reached\n");
                puts("Too many Users");
                close(new_socket);
                continue;
            }
        }

        puts("Connection Accepted");
        char *client_ip = inet_ntoa(client.sin_addr);
        //int client_port = ntohs(client.sin_port);

        printf("ClientIP: %s\n", client_ip);
        write_sock(new_socket, "Hello you have been accepted!\n");

        pthread_t sniffer_thread;
        new_sock = malloc(1 * sizeof(int));       // Oops!
        if (new_sock == 0) { perror("out of memory"); return 1; }
        *new_sock = new_socket;

        if (pthread_create(&sniffer_thread, NULL, connection_handler, (void *)new_sock) < 0)
        {
            perror("Could not create thread");
            return 1;
        }
        puts("Handler Assigned");
    }

    if (new_socket < 0)
    {
        perror("accept failed");
        return 1;
    }
    return 0;
}

// Avoid repetition - use functions!
static void write_sock(int sock, const char *msg)
{
    int len = strlen(msg);
    if (write(sock, msg, len) != len)
    {
        perror("short write on socket");
        exit(1);
    }
}

void *connection_handler(void *socket_desc)
{
    int sock = *(int*)socket_desc;
    int read_size;
    char client_message[2000];

    write_sock(sock, "Greetings! I am your Connection Handler\n");
    write_sock(sock, "What do you want to do\n");

    while ((read_size = recv(sock, client_message, 2000, 0)) > 0)
    {
        client_message[read_size] = '\0';
        write_sock(sock, client_message);
        printf("User Entered:%s\n", client_message);
        int pin = client_message[0]-'0';
        int status = client_message[1]-'0';
        lightLED(pin, status);
    }

    if (read_size == 0)
    {
        puts("Client Disconnected\n");
        fflush(stdout);
        totalConnections--;
    }
    else if (read_size == -1)
    {
        perror("recv Failed");
    }

    free(socket_desc);
    return 0;
}

void lightLED(int pin, int status)
{
//    if (wiringPiSetup() == -1)
//    {
//        puts("wiringPi Error");
//        exit(1);
//    }
    printf("Changing LED Pin %d status %d\n", pin, status);
}
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <pthread.h>
//#include <wiringPi.h>

void *connection_handler(void *);
void lightLED(int pin, int status);
static void write_sock(int sock, const char *msg);

int maxConnections = 1;
int totalConnections = 0;

int main(void)
{
    int socket_desc, new_socket, c, *new_sock;
    struct sockaddr_in server, client;

    socket_desc = socket(AF_INET, SOCK_STREAM, 0);
    if (socket_desc == -1)
    {
        printf("Could not create socket");
        return 1;
    }

    server.sin_family = AF_INET;
    server.sin_addr.s_addr = INADDR_ANY;
    server.sin_port = htons(8888);

    if (bind(socket_desc, (struct sockaddr *)&server, sizeof(server)) < 0)
    {
        puts("bind failed");
        return 1;
    }
    puts("bind done");

    if (listen(socket_desc, 3) != 0)
    {
        perror("listen() failed");
        return 1;
    }

    puts("Waiting for incoming connections...");
    c = sizeof(struct sockaddr_in);
    while ((new_socket = accept(socket_desc, (struct sockaddr *)&client, (socklen_t*)&c)))
    {
        if (new_socket > 0)
        {
            if (totalConnections < maxConnections)
                totalConnections++;
            else
            {
                write_sock(new_socket, "Sorry Maximum Users Reached\n");
                puts("Too many Users");
                close(new_socket);
                continue;
            }
        }

        puts("Connection Accepted");
        char *client_ip = inet_ntoa(client.sin_addr);
        //int client_port = ntohs(client.sin_port);

        printf("ClientIP: %s\n", client_ip);
        write_sock(new_socket, "Hello you have been accepted!\n");

        pthread_t sniffer_thread;
        new_sock = malloc(1 * sizeof(int));       // Oops!
        if (new_sock == 0) { perror("out of memory"); return 1; }
        *new_sock = new_socket;

        if (pthread_create(&sniffer_thread, NULL, connection_handler, (void *)new_sock) < 0)
        {
            perror("Could not create thread");
            return 1;
        }
        puts("Handler Assigned");
    }

    if (new_socket < 0)
    {
        perror("accept failed");
        return 1;
    }
    return 0;
}

// Avoid repetition - use functions!
static void write_sock(int sock, const char *msg)
{
    int len = strlen(msg);
    if (write(sock, msg, len) != len)
    {
        perror("short write on socket");
        exit(1);
    }
}

void *connection_handler(void *socket_desc)
{
    int sock = *(int*)socket_desc;
    int read_size;
    char client_message[2000];

    write_sock(sock, "Greetings! I am your Connection Handler\n");
    write_sock(sock, "What do you want to do\n");

    while ((read_size = recv(sock, client_message, 2000, 0)) > 0)
    {
        client_message[read_size] = '\0';
        write_sock(sock, client_message);
        printf("User Entered:%s\n", client_message);
        int pin = client_message[0]-'0';
        int status = client_message[1]-'0';
        lightLED(pin, status);
    }

    if (read_size == 0)
    {
        puts("Client Disconnected\n");
        fflush(stdout);
        totalConnections--;
    }
    else if (read_size == -1)
    {
        perror("recv Failed");
    }

    free(socket_desc);
    return 0;
}

void lightLED(int pin, int status)
{
//    if (wiringPiSetup() == -1)
//    {
//        puts("wiringPi Error");
//        exit(1);
//    }
    printf("Changing LED Pin %d status %d\n", pin, status);
}