Научная статья на тему 'Написание программы клиент-сервер на C # .NET'

Написание программы клиент-сервер на C # .NET Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
639
46
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
IPv6 / C# / программирование

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Неустроев Айаал Васильевич

В статье предлагается написание программы клиент-сервер в языке программирования C#.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Написание программы клиент-сервер на C # .NET»

Написание программы клиент-сервер на C # .NET Неустроев А. В.

Неустроев Айаал Васильевич /Neustroev Aiaal Vasilevich - студент, кафедра информационных технологий, институт математики и информатики, Северо-Восточный федеральный университет, г. Якутск

Аннотация: в статье предлагается написание программы клиент-сервер в языке программирования C#.

Ключевые слова: IPv6, C#, программирование.

Многие люди слышали о IPv6 и его очевидной необходимости заменить существующую систему IPv4-адресов распределения. IPv4 является нынешней системой в использовании, что присваивает IP-адреса в системе, каждая машина подключена непосредственно к Интернету и имеет уникальный IP (v4) адрес. IP-адрес отображается в читаемой десятичной форме xxx.xxx.xxx.xxx, где каждая секция может хранить десятичной 255 или Hex FF (8 бит). Это означает адрес IPv4 32 бита длиной, что позволяет 4294967296 (232) уникальные значения. В настоящее время население мира по оценкам Организации Объединенных Наций составляет примерно 7 млрд., с увеличением мирового населения примерно на 79 миллионов в год (PRB

01). Хотя каждый человек в мире в настоящее время не использует Интернет, это число гораздо выше, чем количество адресуемых адресов IPv4 [1].

К счастью методы обойти проблемы IPv4 были разработаны. NAT (Network Address Translation), позволяет N машин в частной сети использовать один IP-адрес общественности.

Краткое введение в IPv6

В 1995 году разработали Internet Protocol версии 6 (IPv6). ^6-адрес отображается в читаемой шестнадцатеричной форме хххх: хххх: хххх: хххх: хххх: хххх: хххх: хххх, где каждый бит может иметь максимальную десятичной, магазин 65535 или шестигранного FFFF (16 бит). Это означает IPv6 адрес 128bits, позволяя 3.4x1038 (2128) уникальные значения. «Если в адресном пространстве IPv4 сравнивается с 1 миллиметром, адресное пространство IPv6 будет в 80 раз превышать диаметр галактической системы» (WIDE01) [1].

В командной строке введите IPCONFIG. Вы должны увидеть результат, похожий на этот:

Настройка протокола IP для Windows

Адаптер беспроводной локальной сети Подключение по локальной сети* 13:

Состояние среды...............: Среда передачи недоступна.

DNS-суффикс подключения ......... :

Адаптер Ethernet VirtualBox Host-Only Network:

DNS-суффикс подключения . .

Локальный 1Руб-адрес канала

IPv4-адрес.................

Маска подсети .............

Основной шлюз..............

Адаптер Ethernet Ethernet:

DNS-суффикс подключения ......... : Dlink

Локальный IPve-адрес канала . . . : -Fe80 : : B5ab : SaS-F: 1-F40 :4da75£8

IPv4 - адрес.....................: 192.168.0.83

Маска подсети ................... : 25Б.2Б5.25Б.0

Основной шлюз.................: 192.168.0.1

-Ре 80: : e4d-F: Б606 : 829с : 22сЬ%30 192.168.Б6.1 2ББ.2ББ.2ББ.0

Рис. 1. Ipconfig

11

Здесь, на рис. 1 виден адрес IPv6 FE80: e4df: 5606: 829c:22cb, который будем дальше использовать для нашей статьи.

Реализация в сервере

Как видно на рис. 2, это исходный код сервера, который был написан на языке программирования С#. Сначала необходимо импортировать пространства имен. Потом надо проверить, поддерживает ли система IPv6 или нет, это делаем с помощью «логическое значение SocketSupports IPv6». Затем создаем первоначальный сокет. IPv6Any - означает, что приложение будет видеть все NIC-адреса, которые есть в системе. Затем мы вызываем listener.Listen (0) на сокете. Он будет блокирован до тех пор, пока подключение не будет через порт 1979. Потом обработаем все, что приходит на порт, и будем отображать это на экране [2].

using System.Net.Sockets; using System.Net; using System; int main(>

const int PORT=197,9;

if(!SQcket.Support3lPv€) {

Cansale.Error.WriteLine("Your system does not support IPv€\r\n" +

; "Check you have IPv6 enabled and have changed machine.config"); return;

>

Socket listener = new Socket(

AddressFamily.InterNetworkV€,

SocketType.Stream,

Pro toсоIType.Tcp) ;

list ene r.Bind(new IPEndPo int(IPAddres s.IPv6Any, PORT)); listener.Listen(0};

Socket socket = listener.Accept();

listener. Close (> ;|

byte[] b = new byte[11];

int len;

whi le ( (1 en = so eke t. Re ce i ve (b} } ! = Q } {

System.Console.WriteLine("RX: " +

i System.Text.ASCIIEncoding.ASCII.GetString(b, 0, len}};

b = new byte[11];

}

socket.Close(} ;

>

Рис. 2. Код реализации сервера

Клиентское приложение

Как видно на рис. 3, это исходный код клиента. Во-первых, надо импортировать пространства имен. System.Threading подходит для примера, чтобы ввести задержку в передаче информации на сервер. Потом надо проверить, поддерживает ли система IPv6 или нет, это делаем с помощью логического значения Socket.Supports IPv6. Мы ставим IPv6_ADDR для IPv6-адреса, который мы видели через командную строку с помощью команды Ipconfig. Метод Dns.Resolve не вернет IPv6 адрес, указанный при IPv6ADDR. Затем приложение подключается к порту 1979 по адресу IPv6 ADDR и посылает ASCII строку «Hello world» 10 раз в секунду. И не забудьте запустить код серверного приложения, прежде чем выполнять код клиента.

12

using Sy3tem; using System.Net; using Sy3tem.Net.Sockets; using System.Threading; int main()

{const int PORT = 1979;

const string IPv6_AI>DR = "fe8Q::4cff:fe4f:4fSO"; if(!Socket.SuppartsIPv6) {

Console.Error.WriteLine("Your system does not support IPv64r4n" +

! "Check you have IPv6 enabled and have changed machine.conf ig"); return;

}

IPAddress ipa = IPAddress.Parse[IPv6_ADDR);

IPEndPoint ipeh = пей IPEndPoint(ipa, PORT);

Socket connection = new Socket{

AddressFamily.InterNetworkV6,

SocketType.Stream,

PTOtOCOlType.Tcp); connection.Connect(ipeh);

byte[J b = System.Text.ASCIIEncoding.ASCII.GetBytes{"hello world"); for[int x=0; x<10; x++) {

Console.WriteLine("IX: " + System.Text.ASCIIEncoding-ASCII.GetString(b)); connection.Send[b);

Thread.Sleep[1000):

)

connection.Close[);

)

Рис 3. Код реализации клиента

Литература

1. IPv6 Core Protocols Implementation Qing Li, Tatuya Jinmei and Keiichi Shima, MK, 2006, 8-14 с.

2. Язык программирования C#. Классика Computers Science. 4-е изд. Хейлсберг А., Торгерсен М., Вилтамут С., Голд П., Питер, СПб, 2011, 45-49 с.

Библиотека LibGDX на языке программирования Java

Наумов Р. В.

Наумов Родион Владимирович /Naumov Rodion Vladimirovich - студент, кафедра информационных технологий, институт математики и информатики, Северо-Восточный федеральный университет, г. Якутск

Аннотация: в статье предлагаются основные сведения о библиотеке LibGDX, основные этапы и стадии.

Ключевые слова: java, startup, the game loop, process input, update, render, shutdown.

LibGDX - это библиотека для сборки составления игры на нескольких платформах. Это библиотека достаточно мощная, она может составить android, ios, htmp, desktop (ПК версия) версии сразу.

13

i Надоели баннеры? Вы всегда можете отключить рекламу.