
- •Введение
- •1.Теоретическая часть
- •1.1.Понятие «Сетевое программное обеспечение»
- •1.2.Категории сетевого программного обеспечения.
- •1.2.1. По управления сетевой платой
- •1.2.2. По выполняющее правила (или протокол) общения в сети
- •1.2.3. По сетевой операционной системы
- •1.2.3.1. Некоторые из операционных систем
- •2.Практическая часть
- •Заключение.
- •Список литературы
2.Практическая часть
В ходе выполнения курсовой работы было разработано и запрограммировано в среде программирования Borland Builder C++ клиент серверное приложение с использованием сокетов.
Серверное приложение выполняет создание сервера и подключение клиентов к нему и обмена с ним сообщеними.
Рисунок 1.Создание сервера.
Рисунок 2.Подключение Клиента.
Рисунок 3.Обмен сообщения с клиентом.
Листинг программы сервера
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include <winsock.h>
#include <iostream>
#include <list>
#include <fstream.h>
#include <conio.h>
//---------------------------------------------------------------------------
#pragma argsused
using namespace std;
WSADATA wsadata;
SOCKET server_socket;
char buff[1024];
std::list<SOCKET> clients;
DWORD WINAPI ClientPool(LPVOID param)
{ SOCKET client_socket = (SOCKET)param;
while(true)
{
int bytes = recv(client_socket, &buff[0], sizeof(buff), 0);
printf("client: %s\n", buff);
} return 0;/*
int bytes_recv;
SOCKET client_socket;
client_socket = (SOCKET)param;
while( (bytes_recv = recv(client_socket,&buff[0],sizeof(buff),0)) && bytes_recv !=SOCKET_ERROR)
{printf("client: %s\n", buff);
std::list<SOCKET>::iterator it;
for(it = clients.begin(); it!=clients.end(); ++it)
send((*it), buff, bytes_recv, 0);} */
printf("disconnect\n");
closesocket(client_socket);
return 0;}
int main()
{WSAStartup(MAKEWORD(2,2),&wsadata);
server_socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
SOCKADDR_IN server_addr;
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(6666);
server_addr.sin_addr.s_addr = INADDR_ANY;
bind(server_socket,(SOCKADDR*)&server_addr, sizeof(server_addr));
listen(server_socket, 10);
printf("Server start\n");
while(true)
{
SOCKADDR_IN client_addr;
int len_client_addr = sizeof(client_addr);
SOCKET client = accept(server_socket, (struct sockaddr*)&client_addr, &len_client_addr);
printf("New connection\n");
clients.push_back(client);
DWORD ThreadID;
HANDLE hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ClientPool,
(void*)client, 0, &ThreadID);
while(1)
{
fgets(&buff[0],sizeof(buff),stdin);
send(client, buff, strlen(buff)-1,0);
}
}
return 0;
}
//---------------------------------------------------------------------------
Клиентское приложение выполняет подключение к серверу и обмен с ним сообщениями.
Рисунок 4.Подключение к серверу.
Рисунок 5.Обмен сообщениями с клиентом.
Листинг программы Клиент.
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include <winsock.h>
#include <iostream>
#include <list>
#include <stdlib.h>
#include <stdio.h>
#include <fstream.h>
#include <conio.h>
//---------------------------------------------------------------------------
#pragma argsused
WSADATA wsadata;
SOCKET client_socket;
char buff[1024];
DWORD WINAPI ServerPool(LPVOID param)
{
SOCKET server_socket = (SOCKET)param;
while(true)
{
int bytes = recv(server_socket, &buff[0], sizeof(buff), 0);
printf("server: %s\n", buff);
}
return 0;
}
int main()
{
WSAStartup(MAKEWORD(2,2),&wsadata);
client_socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
sockaddr_in dest_addr;
dest_addr.sin_family = AF_INET;
dest_addr.sin_addr.s_addr = inet_addr( "127.0.0.1" );
dest_addr.sin_port = htons(6666);
if(connect(client_socket, (SOCKADDR*)&dest_addr, sizeof(dest_addr)))
printf("Not connect\n");
else printf("Connect\n");
DWORD ThreadID;
HANDLE hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ServerPool,
(void*) client_socket, 0, &ThreadID);
while(1)
{
fgets(&buff[0],sizeof(buff),stdin);
send(client_socket, buff, strlen(buff)-1,0);
}
return 0;
}
//---------------------------------------------------------------------------