[<<Previous Entry]
[^^Up^^]
[Next Entry>>]
[Menu]
[About The Guide]
Передача данных - Пример
Как только установлено соединение, передача данных осуществляется
вызовом библиотечных функций t_snd(3N) и t_rcv(3N). Работа сервера
заключается в передаче клиенту содержимого файла logfile.
Когда цикл передачи завершается, вызывается t_sndrel(3N) для
корректного прекращения соединения.
ПЕРЕДАЧА ДАННЫХ - ПРИМЕР
run_server(int listen_fd)
{
int nbytes;
FILE *logfp;
char buf[1024];
switch (fork()) {
case -1: perror("fork failed"); exit(20);
default: /* Parent */
if(t_close(conn_fd) < 0) {
t_error("t_close - conn_fd"); exit(21);
}
case 0: /* Child */
if(t_close(listen_fd) < 0) {
t_error("t_close - listen_fd"); exit(22);
}
if((logfp = fopen("logfile", "r")) == NULL) {
perror("Cannot open logfile"); exit(23);
}
. . .
while((nbytes = fread(buf, 1, 1024, logfp)) > 0)
if( t_snd(conn_fd, buf, nbytes, 0) < 0) {
t_error("t_snd failed"); exit(26);
}
if(t_sndrel(conn_fd) < 0) {
t_error("t_sndrel failed"); exit(26);
}
pause(); /* For orderly release indication */
}
}