Написание программы клиент-сервер на 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