Интернет магазин китайских планшетных компьютеров |
|
Компьютеры - Сокеты Беркли - Пример клиента и сервера, использующих TCP23 января 2011Оглавление: 1. Сокеты Беркли 2. Интерфейс сокета Беркли 3. Заголовочные файлы 4. Функции 5. Дополнительные параметры для сокетов 6. Передача данных 7. Пример клиента и сервера, использующих TCP 8. Пример клиента и сервера, использующие UDP TCP реализует концепцию соединения. Процесс создает TCP-сокет вызовом функции СерверСоздание простейшего TCP-сервера состоит из следующих шагов:
/* Код сервера на языке Си */ #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> int main { struct sockaddr_in stSockAddr; int i32SocketFD = socket; if { perror; exit; } memset ); stSockAddr.sin_family = PF_INET; stSockAddr.sin_port = htons; stSockAddr.sin_addr.s_addr = INADDR_ANY; if ( bind( i32SocketFD, &stSockAddr, /* зачем приведение типа?: нужно, но а не void */ sizeof ) == -1 ) { perror; CloseSocketAndExitWithFailure: close; exit; } if == -1 ) { perror; goto CloseSocketAndExitWithFailure; } for { int i32ConnectFD = accept; if { perror; close; /* нужно ли закрывать сокет после ошибки? */ goto CloseSocketAndExitWithFailure; } /* выполнение операций чтения и записи ... */ shutdown; close; } return 0; } КлиентСоздание TCP-клиента происходит следующим образом:
/* Код клиента на языке Си */ #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> int main { struct sockaddr_in stSockAddr; int i32Res; int i32SocketFD = socket; if { perror; exit; } memset ); stSockAddr.sin_family = PF_INET; stSockAddr.sin_port = htons; i32Res = inet_pton; if { perror; CloseSocketAndExitWithFailure: close; exit; } else if { perror; goto CloseSocketAndExitWithFailure; } if ( connect( i32SocketFD, &stSockAddr, /* зачем приведение типа? */ sizeof ) == -1 ) { perror; goto CloseSocketAndExitWithFailure; } /* выполнение операций чтения и записи ... */ shutdown; close; return 0; } Просмотров: 8614
|