пока не доделано, но вот что у меня сейчасErt Donuell писал(а):Чтобы выйти из цикла, вместо true можно установить флаговую переменную, изменяемую из фонового потока по, например, нажатию Esc. Функционал сервера имеет смысл вынести в отдельный поток.
Синтаксис:
Используется csharp
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Sockets;
using System.IO;
using System.Threading.Tasks;
using System.Net;
namespace server_login
{
class AuthenPackage
{
public AuthenPackage(string Login, string Password)
{
this.Login = Login;
this.Password = Password;
}
public string Login { get; private set; }
public string Password { get; private set; }
}
}
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Sockets;
using System.IO;
using System.Threading.Tasks;
using System.Net;
namespace server_login
{
class AuthenPackage
{
public AuthenPackage(string Login, string Password)
{
this.Login = Login;
this.Password = Password;
}
public string Login { get; private set; }
public string Password { get; private set; }
}
}
потом
Синтаксис:
Используется csharp
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Sockets;
using System.IO;
using System.Threading.Tasks;
using System.Net;
namespace server_login
{
class UnityClient
{
public TcpClient client;
public UnityClient(TcpClient TcpClient)
{
client = TcpClient;
}
public void ThreadHandler()
{
NetworkStream stream = null;
try
{
stream = client.GetStream();
using (var reader = new BinaryReader(stream))
{
string login = reader.ReadString();
string password = reader.ReadString();
AuthenPackage package = new AuthenPackage(login, password);
Console.WriteLine("подключение клиента: {0}, пароль: {1}", package.Login, package.Password);
}
using (var writer = new BinaryWriter(stream))
{
writer.Write("server ok");
writer.Flush();
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
finally
{
if (stream != null) stream.Close();
if (client != null) client.Close();
}
}
}
}
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Sockets;
using System.IO;
using System.Threading.Tasks;
using System.Net;
namespace server_login
{
class UnityClient
{
public TcpClient client;
public UnityClient(TcpClient TcpClient)
{
client = TcpClient;
}
public void ThreadHandler()
{
NetworkStream stream = null;
try
{
stream = client.GetStream();
using (var reader = new BinaryReader(stream))
{
string login = reader.ReadString();
string password = reader.ReadString();
AuthenPackage package = new AuthenPackage(login, password);
Console.WriteLine("подключение клиента: {0}, пароль: {1}", package.Login, package.Password);
}
using (var writer = new BinaryWriter(stream))
{
writer.Write("server ok");
writer.Flush();
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
finally
{
if (stream != null) stream.Close();
if (client != null) client.Close();
}
}
}
}
и наконец основное тело
Синтаксис:
Используется csharp
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Sockets;
using System.IO;
using System.Threading.Tasks;
using System.Net;
namespace server_login
{
class Program
{
const int Port = 5006;
static TcpListener server;
static void Main(string[] args)
{
try
{
server = new TcpListener(IPAddress.Parse("127.0.0.1"), Port);
server.Start();
Console.WriteLine("Ожидание подключений...");
while (true)
{
TcpClient client = server.AcceptTcpClient();
UnityClient NewClient = new UnityClient(client);
var task = Task.Run(() => { ThreadHandler(NewClient); });//ТУТ СКОРЕЕ ВСЕГО НЕ ПРАВИЛЬНО ЗАПИСАНО
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
finally
{
if (server != null) server.Stop();
}
}
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Sockets;
using System.IO;
using System.Threading.Tasks;
using System.Net;
namespace server_login
{
class Program
{
const int Port = 5006;
static TcpListener server;
static void Main(string[] args)
{
try
{
server = new TcpListener(IPAddress.Parse("127.0.0.1"), Port);
server.Start();
Console.WriteLine("Ожидание подключений...");
while (true)
{
TcpClient client = server.AcceptTcpClient();
UnityClient NewClient = new UnityClient(client);
var task = Task.Run(() => { ThreadHandler(NewClient); });//ТУТ СКОРЕЕ ВСЕГО НЕ ПРАВИЛЬНО ЗАПИСАНО
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
finally
{
if (server != null) server.Stop();
}
}