Реферат Курсовая Конспект
Текст полностью прокомментированной программы сервера - раздел Информатика, Описание способов тестирования сетей #include <vcl.h> #pragma Hdrstop #pragma Argsused...
|
#include <vcl.h>
#pragma hdrstop
#pragma argsused
#include <stdio.h>
#include <conio.h>
#include <winsock2.h>
#define PORT 666 // порт сервера
#define sHELLO "200 OKnHello, %s [%s] Sailorn"
int main(int argc, char* argv[])
{
char buff[1024];
printf("UDP SERVERn");
// Шаг 1 - подключение библиотеки
if (WSAStartup(0x202, (WSADATA *)&buff[0]))
{
printf("WSAStartup error: %dn", WSAGetLastError());
printf ("Press any key for exit...");
getch();
return -1;
}
// Шаг 2 - создание сокета
SOCKET my_sock;
my_sock = socket(AF_INET,SOCK_DGRAM,0);
if (my_sock == INVALID_SOCKET)
{
printf("Socket() error: %dn", WSAGetLastError());
WSACleanup();
printf ("Press any key for exit...");
getch();
return -1;
}
// Шаг 3 - связывание сокета с локальным адресом
sockaddr_in local_addr;
local_addr.sin_family = AF_INET;
local_addr.sin_addr.s_addr = INADDR_ANY;
local_addr.sin_port = htons(PORT);
if (bind(my_sock, (sockaddr *)&local_addr, sizeof(local_addr)))
{
printf("bind error: %dn", WSAGetLastError());
closesocket(my_sock);
WSACleanup();
printf ("Press any key for exit...");
getch();
return -1;
}
// Шаг 4 обработка пакетов, присланных клиентами
while (1)
{
sockaddr_in client_addr;
int client_addr_size = sizeof(client_addr);
int bsize = recvfrom(my_sock,&buff[0],sizeof(buff)-1,0,
(sockaddr *)&client_addr, &client_addr_size);
if (bsize == SOCKET_ERROR)
printf("recvfrom() error: %dn", WSAGetLastError());
// Определяем IP-адрес клиента и прочие атрибуты
HOSTENT *hst;
hst = gethostbyaddr((char *)&client_addr.sin_addr, 4, AF_INET);
printf("+%s [%s:%d] new DATAGRAM!n",
(hst) ? hst->h_name : "Unknown host",
inet_ntoa(client_addr.sin_addr),
ntohs(client_addr.sin_port));
// добавление завершающего нуля
buff[bsize] = 0;
// Вывод на экран
printf("C=>S:%sn", &buff[0]);
// посылка датаграммы клиенту
sendto(my_sock, &buff[0], bsize, 0,
(sockaddr *)&client_addr, sizeof(client_addr));
}
return 0;
}
– Конец работы –
Эта тема принадлежит разделу:
Общий алгоритм работы клиент серверной системы тестирования сети... Запуск программы сервера... Запуск программы клиента...
Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Текст полностью прокомментированной программы сервера
Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:
Твитнуть |
Новости и инфо для студентов