diff --git a/client.c b/client.c
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..c5dfe8452b7547a134d1c92fbab3d8d40525f170 100644
--- a/client.c
+++ b/client.c
@@ -0,0 +1,38 @@
+#include <arpa/inet.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <netdb.h>
+
+
+
+void main(int argc, char *argv[]) {
+    int sockfd = 0 /*listenfd*/, connfd = 0, n = 0;
+    char recvBuff[1025];
+    struct sockaddr_in serv_addr;
+    struct hostent *server;
+
+    sockfd = socket(AF_INET, SOCK_STREAM, 0); //create socket
+
+    server = gethostbyname(argv[1]);
+
+    memset(&serv_addr, '0', sizeof(serv_addr)); //initialise server address
+    memset(recvBuff, '0', sizeof(recvBuff)); //initialise RECEIVE buffer
+    bcopy((char *)server->h_addr,(char *)&serv_addr.sin_addr.s_addr,server->h_length);
+    serv_addr.sin_family = AF_INET; //Type of address – internet IP
+    serv_addr.sin_port = htons(atoi(argv[2])); // port no
+
+    if (connect(sockfd,  (struct sockaddr*)&serv_addr, sizeof(serv_addr)) < 0) {
+        printf("Error connecting to server\n");
+    } else {
+        printf("%s server\n", (char*)&serv_addr);
+    }
+
+
+    while ((n = read(connfd, recvBuff, sizeof(recvBuff)-1)) > 0) {
+        printf("%s\n\n", recvBuff);
+    }
+}
diff --git a/makefile b/makefile
index 3b57db5b110a33088a7217ff1aec253800c2dfd6..922856f99cdf16c87bad40e259dd2aff75a765c8 100644
--- a/makefile
+++ b/makefile
@@ -1,4 +1,9 @@
 server: server.c
 	gcc -o server server.c
-clean :
-	rm server
\ No newline at end of file
+
+client: client.c
+	gcc -o client client.c
+
+clean:
+	rm server
+	rm client
\ No newline at end of file
diff --git a/server.c b/server.c
index 610b61246baeb8115ddacd54f2e853a8767f53be..c8c29d3188294a2eb66e59043877015f6fcdfc4c 100644
--- a/server.c
+++ b/server.c
@@ -3,25 +3,34 @@
 #include <netinet/in.h>
 #include <stdio.h>
 #include <string.h>
+#include <stdlib.h>
 #include <unistd.h>
 
 
-void main() {
+void main(int argc, char *argv[]) {
     int listenfd = 0, connfd = 0;
     char sendBuff[1025];
     struct sockaddr_in serv_addr;
 
     listenfd = socket(AF_INET, SOCK_STREAM, 0); //create socket
+    if (listenfd < 0) {
+        printf("Error creating socket\n");
+    }
     memset(&serv_addr, '0', sizeof(serv_addr)); //initialise server address
     memset(sendBuff, '0', sizeof(sendBuff)); //initialise send buffer
     serv_addr.sin_family = AF_INET; //Type of address – internet IP
     serv_addr.sin_addr.s_addr = htonl(INADDR_ANY); //Listen on ANY IP Addr
-    serv_addr.sin_port = htons(5000); //Listen on port 5000
-
-    bind(listenfd, (struct sockaddr*)&serv_addr, sizeof(serv_addr));
+    // serv_addr.sin_port = htons(5000); //Listen on port 5000
+    serv_addr.sin_port = htons(atoi(argv[1]));
+    if (bind(listenfd, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) < 0) {
+        printf("Error binding\n");
+    }
     listen(listenfd, 10); // maximum number of client connections to queue
 
     connfd = accept(listenfd, (struct sockaddr*)NULL, NULL);
+    if (connfd < 0) {
+        printf("Error accepting\n");
+    }
     snprintf(sendBuff, sizeof(sendBuff), "Hello World!");
     write(connfd, sendBuff, strlen(sendBuff));
     close(connfd);