카테고리

asm (27) bootloader_x86_grub (1) C (92) compile (11) config (76) CPP (13) CSS (1) debugging (7) gimp (1) Go (1) html (1) Java (1) JavaScript (1) kernel (19) LibreOffice (3) Linux system progamming (21) MFC (1) opencv (4) OpenGL (1) PHP (1) Python (4) qemu (29) shell (3) socket (7) troubleshooting (2) ubuntu18.04 (2) windows (1)

2018/12/07

socket client programming

/*
 * filename server_ipaddress portno
 *
 * argv[0] filename
 * argv[1] server_ipaddress]
 * argv[2] portno */

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>

void error(const char *msg)
{
perror(msg);
exit(0);
}

int main(int argc, char *argv[]){
int sockfd, portno, n;
struct sockaddr_in serv_addr;
struct hostent *server;

char buffer[256];
if (argc < 3) {
fprintf(stderr, "usage %s hostname port\n", argv[0]);
exit(0);
}
portno = atoi(argv[2]);
sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd < 0)
error("ERROR opening socket");

server = gethostbyname(argv[1]);
if(server == NULL){
fprintf(stderr, "Error, no such host");
}

bzero((char *) &serv_addr, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
bcopy((char *) server->h_addr, (char *) &serv_addr.sin_addr.s_addr, server->h_length);
serv_addr.sin_port = htons(portno);
if(connect(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0)
error("Connection Failed:");

while(1){
bzero(buffer, 255);
fgets(buffer, 255, stdin);
n = write(sockfd, buffer, strlen(buffer));
if(n < 0)
error("Error on writing");
bzero(buffer, 255);
n = read(sockfd, buffer, 255);
if(n < 0)
error("Error on reading.");
printf("Server: %s", buffer);

int i = strncmp("bye", buffer, 3);
if (i == 0)
break;
}
close(sockfd);
return 0;

}
// compile: gcc -o client client.c
// client 127.0.0.1 or IP 9999

댓글 없음:

댓글 쓰기