Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lab_UNIX_15_19_окт2004.doc
Скачиваний:
3
Добавлен:
27.04.2019
Размер:
478.72 Кб
Скачать

7 Список рекомендованої літератури

1 Робачевский А. М. Операционная система UNIX. — СПб.: БХВ-Петербург, 2002.

2 Ивановский С. Операционная система UNIX. — М.: Познавательная книга плюс, 2000.

3 Дегтярев Е. К. Введение в UNIX. — М.: МП "Память", 1991.

4 Снейдер И. Эффективное программирование TCP/IP. СПб.: Питер, 2002.

5 http://www.freebsd.org.ru

6 http://www.anriintern.com/computer/freebsd/

7 http://www.opennet.ru

ДОДАТОК А

Тексти програм serverfifo та clientfifo

Лістинг 1

serverfifo:

#include <sys/types.h>

#include <sys/stat.h>

#include <fcntl.h>

#define FIFO "/fifo.1"

#define MAXBUF 80

main()

{

int readfd, n;

char buff[MAXBUF];

if(mkfifo(FIFO, 0777) < 0){

printf("Nemozhlyvo stvoryty FIFO\n");

exit(1);

}

if((readfd = open(FIFO, O_RDONLY)) < 0){

printf("Nemozhlyvo vidkryty FIFO\n");

exit(1);

}

while((n = read(readfd, buff, MAXBUF)) > 0)

if(write(1, buff, n) != n){

printf("Pomylka vyvodu\n");

exit(1);

}

close(readfd);

exit(0);

}

Лістинг 2

clientfifo:

#include <sys/types.h>

#include <sys/stat.h>

#include <fcntl.h>

#define FIFO "/fifo.1"

main()

{

int writefd,n;

if((writefd = open(FIFO, O_WRONLY))<0) {

printf("Nemozhlyvo vidkryty FIFO\n");

exit(1);

}

if(write(writefd,"Dobryj denj, Svite!\n",21)!=21){

printf("Pomylka zapysu\n");

exit(1);

}

close(writefd);

if(unlink(FIFO) <0){

printf("Nemozhlyvo vyluchyty FIFO\n");

exit(1);

}

exit(0);

}

ДОДАТОК Б

Тексти програм socketserver та socketclient

Лістинг 1

socketserver:

#include <sys/types.h>

#include <sys/socket.h>

#include <sys/un.h>

#define MAXBUF 256

#define FILE "echo.serv"

char buf[MAXBUF];

main()

{

struct sockaddr_un serv_addr, clnt_addr;

int sockfd;

int saddrlen, caddrlen, max_caddrlen, n;

if((sockfd = socket(AF_UNIX, SOCK_DGRAM, 0)) < 0){

printf("Nemozhlyvo stvoryty socket\n");

exit(1);

}

unlink(FILE);

bzero(&serv_addr, sizeof(serv_addr));

serv_addr.sun_family = AF_UNIX;

strcpy(serv_addr.sun_path, FILE);

saddrlen=sizeof(serv_addr.sun_family)+strlen(serv_addr.sun_path);

if(bind(sockfd, (struct sockaddr*)&serv_addr, saddrlen) < 0){

printf("Pomylka svyazuvannya socketa z adresoyu\n");

exit(1);

}

max_caddrlen = sizeof(clnt_addr);

for(;;){

caddrlen = max_caddrlen;

n = recvfrom(sockfd, buf, MAXBUF, 0, (struct sockaddr*)&clnt_addr, &caddrlen);

if(n < 0){

printf("Pomylka pryjmannya\n");

exit(1);

}

if(sendto(sockfd, buf, n, 0, (struct sockaddr*)&clnt_addr, caddrlen) !=n){

printf("Pomylka peredavannya\n");

exit(1);

}

}

}

Лістинг 2

socketclient:

#include <sys/types.h>

#include <sys/socket.h>

#include <sys/un.h>

#include <errno.h>

#define MAXBUF 256

#define FILE "echo.serv"

#define NULL 0

char *msg = "Hello world!";

char buf[MAXBUF];

main()

{

struct sockaddr_un serv_addr, clnt_addr;

int sockfd;

int saddrlen, caddrlen, msglen, n;

bzero(&serv_addr, sizeof(serv_addr));

serv_addr.sun_family = AF_UNIX;

strcpy(serv_addr.sun_path, FILE);

saddrlen=sizeof(serv_addr.sun_family)+strlen(serv_addr.sun_path);

if((sockfd = socket(AF_UNIX, SOCK_DGRAM, 0)) < 0){

printf("Nemozhlyvo stvoryty' socket\n");

exit(1);

}

bzero(&clnt_addr, sizeof(clnt_addr));

clnt_addr.sun_family = AF_UNIX;

strcpy(clnt_addr.sun_path, FILE);

mktemp(clnt_addr.sun_path);

caddrlen=sizeof(clnt_addr.sun_family)+strlen(clnt_addr.sun_path);

if(bind(sockfd, (struct sockaddr*)&clnt_addr, caddrlen) < 0){

printf("Pomylka svyazuvannya socketa\n");

exit(1);

}

msglen = strlen(msg);

if(sendto(sockfd, msg, msglen, 0, (struct sockaddr*)&serv_addr, saddrlen) != msglen){

printf("Pomylka peredavannya povidomlennya\n");

exit(1);

}

if((n = recvfrom(sockfd, buf, MAXBUF, 0, NULL, 0)) < 0){

printf("Pomylka otrymannya povidomlennya\n");

exit(1);

}

printf("Echo: %s\n", buf);

close(sockfd);

unlink(clnt_addr.sun_path);

exit(0);

}

ДОДАТОК В

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]