diff --git a/client_new.c b/client_new.c
new file mode 100644
index 0000000000000000000000000000000000000000..66329694702b3a11866bd48c545f61cfc9997da2
--- /dev/null
+++ b/client_new.c
@@ -0,0 +1,305 @@
+//이채민 client_new.c
+
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <string.h>
+#include <arpa/inet.h>
+#include <sys/socket.h>
+
+#include <wiringPi.h>
+#include <wiringPiSPI.h>
+#include <stdint.h>
+
+
+#define IN  0
+#define OUT 1
+#define LOW  0
+#define HIGH 1
+#define POUT 18
+
+#define VALUE_MAX 30
+
+#define MAX_TIME 100
+#define DHT 5
+#define PIN 20
+
+int data[5] = {0,0,0,0,0};
+char temp_msg[10];
+
+int read_dht_data() {
+   uint8_t laststate = HIGH;
+   uint8_t counter = 0;
+   uint8_t j = 0, i;
+   
+   data[0] = data[1] = data[2] = data[3] = data[4] = 0;
+   
+   pinMode(DHT, OUTPUT);
+   digitalWrite(DHT, LOW);
+   delay(18);
+   
+   pinMode(DHT, INPUT);
+   
+   for (i=0; i<MAX_TIME; i++) {
+      counter = 0;
+      while(digitalRead(DHT) == laststate)
+      {
+         counter++;
+         delayMicroseconds(1);
+         if (counter == 255) {
+            break;
+         }
+      }
+      laststate = digitalRead(DHT);
+      
+      if (counter == 255)
+         break;
+         
+      if ((i>=4) && (i%2==0))
+      {
+         data[j/8]<<=1;
+         if (counter > 16)
+            data[j/8] |= 1;
+         j++;
+      }
+   }
+   if ((j>=40) && (data[4] == ((data[0]+ data[1] + data[2] + data[3]) & 0xFF))) {
+      printf("Humidity = %d.%d %% Temperature = %d.%d C\n", data[0], data[1], data[2], data[3]);
+      //sprintf(temp_msg,"%d\n", data[2]);
+      //printf("temp_msg : %s\n", temp_msg);
+      if (data[2]>=28) {
+         printf("hot! hot! hot!\n");
+         //temp_msg[0] = 1;
+         //printf("temp_msg : %s\n", temp_msg);
+         return(1);
+      
+      }
+      else return(0);
+         
+   } else {
+      printf("failed\n");
+      return(0);
+   }
+
+}
+
+static int GPIOExport(int pin) {
+#define BUFFER_MAX 3
+  char buffer[BUFFER_MAX];
+  ssize_t bytes_written;
+  int fd;
+
+  fd = open("/sys/class/gpio/export", O_WRONLY);
+  if (-1 == fd) {
+    fprintf(stderr, "Failed to open export for writing!\n");
+    return(-1);
+  }
+
+  bytes_written = snprintf(buffer, BUFFER_MAX, "%d", pin);
+  write(fd, buffer, bytes_written);
+  close(fd);
+  return(0);
+}
+
+
+
+static int GPIOUnexport(int pin) {
+   char buffer[BUFFER_MAX];
+   ssize_t bytes_written;
+   int fd;
+   
+   fd = open("/sys/class/gpio/unexport", O_WRONLY);
+   if (-1 == fd) {
+      fprintf(stderr, "Failed to open unexport for writing!\n");
+      return(-1);
+   }
+   
+   bytes_written = snprintf(buffer, BUFFER_MAX, "%d", pin);
+   write(fd, buffer, bytes_written);
+   close(fd);
+   return(0);
+}
+
+static int GPIODirection(int pin, int dir) {
+  static const char s_directions_str[] = "in\0out";
+
+#define DIRECTION_MAX 35
+  char path[DIRECTION_MAX] = "/sys/class/gpio/gpio%d/direction";
+  int fd;
+
+  snprintf(path, DIRECTION_MAX, "/sys/class/gpio/gpio%d/direction", pin);
+
+  fd = open(path, O_WRONLY);
+  if (-1 == fd) {
+    fprintf(stderr, "Failed to open gpio direction for writing!\n");
+    return(-1);
+  }
+
+  if (-1 == write(fd, &s_directions_str[IN==dir?0:3], IN==dir?2:3)) {
+    fprintf(stderr, "Failed to set direction!\n");
+    close(fd);
+    return(-1);
+  }
+
+  close(fd);
+  return(0);
+}
+
+static int GPIOWrite(int pin, int value) {
+  static const char s_values_str[] = "01";
+  
+  char path[VALUE_MAX];
+  int fd;
+  
+  snprintf(path, VALUE_MAX, "/sys/class/gpio/gpio%d/value", pin);
+  fd = open(path, O_WRONLY);
+  if (-1 == fd) {
+     fprintf(stderr, "Failed to open gpio value for writing!\n");
+     return(-1); 
+  }
+   if (1 != write(fd, &s_values_str[LOW == value ? 0 : 1], 1)) {
+      fprintf(stderr, "Failed to write value!\n");
+      close(fd);
+      return(-1);
+   }
+   
+   close(fd);
+   return(0);
+}
+
+
+static int GPIORead(int pin) {
+   char path[VALUE_MAX];
+   char value_str[3];
+   int fd;
+   
+   snprintf(path, VALUE_MAX, "/sys/class/gpio/gpio%d/value", pin);
+   fd = open(path, O_RDONLY);
+   if ( -1 == fd) {
+      fprintf(stderr, "Failed to open gpio value for reading!\n");
+      return(-1);
+   }
+   if (-1 == read(fd, value_str, 3)) {
+      fprintf(stderr, "Failed to read value!\n");
+      close(fd);
+      return(-1);
+   }
+   
+   close(fd);
+   
+   return(atoi(value_str));
+}
+
+void error_handling(char *message){
+    fputs(message,stderr);
+    fputc('\n',stderr);
+    exit(1);
+}
+
+
+int main(int argc, char *argv[]) {
+    int sock;
+    struct sockaddr_in serv_addr;
+    char msg[2];
+    char on[2]="1";
+    int str_len;
+    int light = 0;
+    int state = 1;
+    int prev_state = 1;
+    
+    if(argc!=3){
+        printf("Usage : %s <IP> <port>\n",argv[0]);
+        exit(1);
+    }
+    /*
+    const *hostname;
+    char buf [BUFSIZE];
+    
+    server = gethostbyname(hostname);
+    if (server == NULL) {
+   fprintf(stderr, "ERROR, no such host %s\n", hostname);
+   exit((0);
+    }
+*/
+    //Enable GPIO pins
+    if (-1 == GPIOExport(POUT))
+        return(1);
+
+    //Set GPIO directions
+    if (-1 == GPIODirection(POUT, OUT))
+        return(2);
+    
+    if (wiringPiSetupGpio() == -1)
+   exit(1);
+    
+
+    sock = socket(PF_INET, SOCK_STREAM, 0);
+    if(sock == -1)
+   error_handling("socket() error");
+        
+    memset(&serv_addr, 0, sizeof(serv_addr));
+    serv_addr.sin_family = AF_INET;
+    serv_addr.sin_addr.s_addr = inet_addr(argv[1]);
+    serv_addr.sin_port = htons(atoi(argv[2]));  
+        
+    if(connect(sock, (struct sockaddr*)&serv_addr, sizeof(serv_addr))==-1)
+   error_handling("connect() error");
+
+
+    while(1){                
+   state = read_dht_data();
+   //read_dht_data();
+   delay(3000);
+   
+   if(prev_state == 0 && state == 1){
+            light = (light+1)%2;
+            snprintf(msg,2,"%d",light);
+            write(sock, msg, sizeof(msg));
+            printf("msg = %s\n",msg);
+   
+       //write(sock, temp_msg, sizeof(temp_msg));
+       //printf("temp msg=%s\n", temp_msg);
+      
+      /* if (temp_msg >= "28") {
+      printf("28 upup");
+       }*/
+      
+        }
+   
+   prev_state = state;
+   usleep(500*100);
+        
+   /*
+   str_len = read(sock, msg, sizeof(msg));
+        //str_len = read(sock, temp_msg, sizeof(temp_msg));
+        if(str_len == -1)
+            error_handling("read() error");
+            
+        printf("Receive message from Server : %s\n", msg);
+        if(strncmp(on,msg,1)==0) {
+       light = 1;
+       read_dht_data();
+       delay(2000);
+       
+       write(sock, temp_msg, sizeof(temp_msg));
+   }
+            
+        else
+            light = 0;
+   */
+            
+        //GPIOWrite(POUT, light);
+   
+    }
+    close(sock);
+    //Disable GPIO pins
+    if (-1 == GPIOUnexport(POUT))
+        return(4);
+
+    return(0);
+}
+
+