Skip to content

Instantly share code, notes, and snippets.

@Seregamil
Created October 11, 2014 11:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Seregamil/5e08bb8d97fff0cb8ad0 to your computer and use it in GitHub Desktop.
Save Seregamil/5e08bb8d97fff0cb8ad0 to your computer and use it in GitHub Desktop.
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