Сокеты И Многопоточность

123456789igor

Active Member
12.01.2011
29
0
Минск
#1
Здравствуйте. Есть у меня такая проблема. Никак не могу понять как организовать выполнение 2х различных задач параллельно.
Есть клиент-серверное приложение. 1 метод отвечает за ожидание подключения и прием данных, 2ой метод отвечает за действия над принятыми данными.
Выглядит это так
Код:
private async void Form1_Load(object sender, EventArgs e)
{
while (true)
{
new Thread(() => Run()).Start();
}
while (true)
{
if (massOfWords[0] != "")
break;
}
WorkWithDB db = new WorkWithDB();
new Thread(() =>db.isLogonOrRegistration(massOfWords)).Start();

}
public async Task Run()
{
massOfWords = await StartServer();
}

public async Task<String[]> StartServer()
{
Socket _server;
IPHostEntry ipHostInfo = Dns.Resolve(Dns.GetHostName());
IPAddress ipAddress = ipHostInfo.AddressList[0];
//ServerSocket ss = new ServerSocket(ipAddress, 11000);
_server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
_server.Bind(new IPEndPoint(ipAddress, 11000));
_server.Listen(20);
ServerSocket ss = new ServerSocket();
string result = await ss.Accept(_server);
Console.WriteLine(result);
_server.Close();
_server.Dispose();
return result.Split('|');
}
В результате хочу получить что-то вроде: запускаем приложение, метод Run запускается в новом потоке(выполнение программы идет дальше) программа крутится в цикле, пока какой-то клиент не подключится и не передаст данные. В случае если что-то получили запускаем метод isLogonOrRegistration в ещё 1ом потоке, при этом поток, в котором Run, работает и ждет следующего подключения. Никак не могу понять как это сделать
Если у вас есть идея как эту логику реализовать по другому- напишите пожалуйста.
собственно сама логика: Этот кусок кода- это сервер. Клиент вводит креды и отправляет их серверу(сервер может обрабатывать подключения множества клиентов) далее сервер проверяет верные креды ли ввел пользователь. Никак не получается сделать это параллельно. Прошу совета.