Created
October 11, 2014 11:14
-
-
Save Seregamil/5e08bb8d97fff0cb8ad0 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using System.Collections.Generic; | |
using System.Linq; | |
using System.Text; | |
using System.Threading.Tasks; | |
using System.Text.RegularExpressions; | |
using System.Threading; | |
namespace client_side | |
{ | |
class Program | |
{ | |
static sockets SAMP = new sockets(); // инициализация класса | |
static void Main(string[] args) | |
{ | |
string server_ip = string.Empty; // строка, содержащая IP адрес сервера | |
string send_line = string.Empty; // строка, которая будет отправляться серверу | |
Regex check_ip = new Regex(@"^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$"); // регулярное выражение для проверки IP адреса | |
Thread reading; // поток для чтения | |
Console.WriteLine("Client-side for samp-server enabled. By Seregamil."); | |
enter_ip: Console.WriteLine("Enter ip address for connection: "); | |
server_ip = Console.ReadLine(); // ожидание строки с IP адресом сервера | |
if (!check_ip.IsMatch(server_ip)) // если IP невалидный, то пошлем его на повторный ввод адреса | |
goto enter_ip; | |
Console.WriteLine("Connecting to {0}", server_ip); | |
if (!SAMP.EnableConnection(server_ip, 9000)) // если попытка подключения к серверу прошла криво, то вернем игрока на ввод IP | |
{ | |
Console.WriteLine("Error connecting to {0}", server_ip); | |
goto enter_ip; | |
} | |
Console.WriteLine("Соединение установлено!"); | |
SAMP.SendInformation("Игрок Seregamil начинает подключение к серверу."); // сообщим о том, что кто-то начинает соединяться с сервером | |
reading = new Thread(new ThreadStart(ReadInformation)); // создадим отдельный поток, в котором будем обрабатывать запросы сервера | |
reading.Start(); | |
send_to_server: send_line = Console.ReadLine(); // получим входную строку для отправки информации серверу | |
if (send_line == "-exit") // если введена команда на остановку соединения с сервером | |
{ | |
reading.Abort(); // остановим поток, созданный для чтения информации | |
SAMP.DisableConnection(); // прервем соединение с сервером | |
Console.WriteLine("Соединение с {0} успешно прервано!", server_ip); | |
goto enter_ip; // вернемся к вводу IP адреса | |
} | |
if (!SAMP.IsConnectionEnabled()) // если соединение с сервером не установленно, а юзер об этом понятия не имеет, то сообщим о сей фигне | |
{ | |
reading.Abort(); // остановим поток, созданный для чтения информации | |
SAMP.DisableConnection(); // прервем соединение с сервером | |
Console.WriteLine("Соединение с {0} было неожиданно прервано!", server_ip); | |
goto enter_ip; // вернемся к вводу IP адреса | |
} | |
SAMP.SendInformation(send_line); // отправим информацию на сервер | |
goto send_to_server; | |
} | |
public static void ReadInformation() | |
{ | |
string buffer = string.Empty; // создаём переменную для хранения информации | |
while (true) // запустим бесконечный цикл | |
{ | |
if (!SAMP.IsConnectionEnabled()) // если произошла ошибка, то прервем цикл | |
break; | |
buffer = SAMP.ReadInformation(); // запишем в буфер информацию от сервера | |
//Thread.Sleep( 300 ); | |
Console.WriteLine(buffer); // выведем полученный текст | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment