Created
September 23, 2017 04:39
-
-
Save AjayKrP/51b917b27b39c77d2ff172c0e2801d40 to your computer and use it in GitHub Desktop.
COMPUTER_NETWORK
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <stdio.h> | |
#include <stdlib.h> | |
#include <string.h> | |
#include <unistd.h> | |
#include <sys/socket.h> | |
#include <netinet/in.h> | |
void error(const char *msg) { | |
perror(msg); | |
exit(1); | |
} | |
int main(int argc, char *argv[]) { | |
int sockfd, newsockfd; | |
uint16_t portno; | |
socklen_t clilen; | |
char buffer[256]; | |
struct sockaddr_in serv_addr, cli_addr; | |
ssize_t n; | |
if (argc < 2) { | |
fprintf(stderr,"ERROR, no port provided\n"); | |
exit(1); | |
} | |
sockfd = socket(AF_INET, SOCK_STREAM, 0); | |
if (sockfd < 0) | |
error("ERROR opening socket"); | |
bzero((char *) &serv_addr, sizeof(serv_addr)); | |
portno = (uint16_t)atoi(argv[1]); | |
serv_addr.sin_family = AF_INET; | |
serv_addr.sin_addr.s_addr = INADDR_ANY; | |
serv_addr.sin_port = htons(portno); | |
if (bind(sockfd, (struct sockaddr *) &serv_addr, | |
sizeof(serv_addr)) < 0) | |
error("ERROR on binding"); | |
listen(sockfd,5); | |
clilen = sizeof(cli_addr); | |
newsockfd = accept(sockfd, (struct sockaddr *) &cli_addr, &clilen); | |
if (newsockfd < 0) | |
error("ERROR on accept"); | |
bzero(buffer,256); | |
n = read(newsockfd,buffer,255); | |
if (n < 0) error("ERROR reading from socket"); | |
printf("Here is the message: %s\n",buffer); | |
n = write(newsockfd,"I got your message",28); | |
if (n < 0) error("ERROR writing to socket"); | |
close(newsockfd); | |
close(sockfd); | |
return 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment