Министерство образования и науки РФ
Тверской государственный технический университет
Кафедра ЭВМ
Лабораторная работа №3
«Организация удаленного взаимодействия с помощью сокетов.»
Выполнил: Базанов А.Р.
Проверил: Веселов А.А.
Тверь
2012 г.
Цель работы:
Изучение основных принципов построения распределенных Windows-приложений с помощью сокетов на основе потоков и дэйтаграмм и приобретении практических навыков по их разработке и отладке в интегрированной среде Visual Studio..
Задание на лабораторную работу:
Взаимодействие на основе потоковых сокетов:
В соответствии с методикой, изложенной в разделе 1.4, создать классы клиентского и серверного приложений.
Запустить и протестировать работу клиентского и серверного приложений.
С учетом содержимого раздела 1.4 составить блок-схему алгоритмов работы приложения клиента и приложения сервера, алгоритм их взаимодействия и составить их текстовое описание.
Взаимодействие на основе дэйтаграмм:
Ознакомится с основными принципами организации удаленного взаимодействия с помощью дэйтаграмм .
На основе описания примера (раздел 1.5.1) создать классы приложений клиента и сервера способных взаимодействовать между собой с помощью дэйтаграмм.
Отладить, запустить и протестировать процесс взаимодействия между клиентом и сервером без установления соединений.
Составить блок-схему алгоритма работы: клиентского приложения, серверного приложений, алгоритма организации взаимодействия между ними и составить их текстовое описание
Многопоточное взаимодействие
В соответствии с описанием, представленным в разделе 1.6, создать классы клиентского и серверных приложений для игровой системы.
Протестировать работу игровой системы.
Код клиента и сервера на основе потоковых сокетов Код сервера
using System;
using System.IO;
using System.Net;
using System.Net.Sockets;
namespace TcpServer
{
class Program
{
static void Main()
{
TcpListener listner;
TcpClient client;
StreamReader sr;
StreamWriter sw;
String temp;
listner = new TcpListener(IPAddress.Parse("192.168.0.101"), 10000);
listner.Start();
Console.WriteLine("Server started");
client = listner.AcceptTcpClient();
Console.WriteLine("Client connected");
sr = new StreamReader(client.GetStream());
sw = new StreamWriter(client.GetStream());
sw.AutoFlush = true;
sw.WriteLine("Connection established");
Console.WriteLine("Message was sent");
Console.WriteLine("There ara some messages from client:\n");
while ((temp = sr.ReadLine()) != "TERMINATE")
{
Console.WriteLine("Client said " + temp);
}
Console.WriteLine("There are all");
client.Close();
sr.Close();
sw.Close();
Console.ReadLine();
}
}
}
Код клиента
using System;
using System.IO;
using Sock = System.Net.Sockets;
namespace TcpClient
{
class Program
{
static void Main()
{
StreamReader sr;
StreamWriter sw;
var client = new Sock.TcpClient();
client.Connect("192.168.0.101", 10000);
sr = new StreamReader(client.GetStream());
sw = new StreamWriter(client.GetStream());
sw.AutoFlush = true;
Console.WriteLine(sr.ReadLine());
sw.WriteLine("Hello, it's client!");
sw.WriteLine("buy!!");
sw.WriteLine("TERMINATE");
Console.ReadLine();
}
}
}