clienttcp:
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <fcntl.h>
#include <netdb.h>
#include <errno.h>
/*Номер порту, який обслуговується сервером*/
#define PORTNUM 1500
int main(int argc, char* argv[])
{
int s, pid, i, j;
struct sockaddr_in serv_addr;
struct hostent *hp;
char buf[80] = "Hello, World!\n";
/*Клієнтові як аргумент передається доменне ім'я хоста, на якому запущено сервер. Доменне ім'я транслюється у адресу*/
if((hp = gethostbyname(argv[1])) == 0)
{
perror("Pomylka vyklyku gethostbyname()");
exit(3);
}
bzero(&serv_addr, sizeof(serv_addr));
bcopy(hp->h_addr, &serv_addr.sin_addr, hp->h_length);
serv_addr.sin_family = hp->h_addrtype;
serv_addr.sin_port = htons(PORTNUM);
/*Створімо сокет*/.
if((s = socket(AF_INET, SOCK_STREAM, 0)) == -1){
perror("Pomylka vyklyku socket()");
exit(1);
}
fprintf(stderr, "Addresa clienta: %s\n", inet_ntoa(serv_addr.sin_addr));
/*Створімо віртуальний канал*/
if(connect(s, (struct sockaddr*) &serv_addr, sizeof(serv_addr)) ==
-1){
perror("Pomylka vyklyku connect()");
exit(1);
}
/*Передамо серверові повідомлення й отримаємо його назад*/
send(s, buf, sizeof(buf), 0);
if(recv(s, buf, sizeof(buf), 0) < 0){
perror("Pomylka vyklyku recv()");
exit(1);
}
/*Виведемо отримане повідомлення на екран*/
printf("Otrymano vid servera: %s\n", buf);
close(s);
printf("Client zavershyv robotu \n\n");
}
ДОДАТОК Г