Last active
October 1, 2017 03:54
-
-
Save AjayKrP/5f958230c41361bf29f8ecf2e492604a to your computer and use it in GitHub Desktop.
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 <stdint.h> | |
#include <netinet/in.h> | |
#include <netdb.h> | |
#include <memory.h> | |
#include <zconf.h> | |
void error(const char* msg){ | |
perror(msg); | |
exit(0); | |
} | |
int main(int argc, char** argv){ | |
int sockfd; | |
ssize_t n; | |
uint16_t port; | |
struct sockaddr_in serv_addr; | |
struct hostent* server; | |
char buffer[256]; | |
if(argc < 3){ | |
fprintf(stderr, "Uses %s hostname port", argv[0]); | |
exit(0); | |
} | |
port = (uint16_t)atoi(argv[2]); | |
sockfd = socket(AF_INET, SOCK_STREAM, 0); | |
if(sockfd < 0){ | |
error("Unable to create socket"); | |
} | |
server = gethostbyname(argv[1]); | |
if(server == NULL){ | |
fprintf(stderr, "Np such host\n"); | |
exit(0); | |
} | |
bzero((char*)&serv_addr, sizeof(serv_addr)); | |
serv_addr.sin_family = AF_INET; | |
bcopy(server->h_addr, (char*)&serv_addr.sin_addr.s_addr, | |
(size_t)server->h_length); | |
serv_addr.sin_port = htons(port); | |
if(connect(sockfd, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) < 0){ | |
error("Error to connecting!!!"); | |
} | |
printf("Please enter operation: "); | |
bzero(buffer, 256); | |
fgets(buffer, 255, stdin); | |
n = write(sockfd, buffer, strlen(buffer)); | |
if(n < 0){ | |
error("Error to writing socket!!!"); | |
} | |
bzero(buffer, 256); | |
n = read(sockfd, buffer, 255); | |
if(n < 0){ | |
error("Error reading from socket!!!"); | |
} | |
printf("Result is = %s\n", buffer); | |
close(sockfd); | |
return 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment