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);