Я пишу два консольных приложения, клиент и сервер.Я немного застрял в двух вещах, которые поначалу казались довольно простыми.
# 1: Я хочу написать функцию для следующего фрагмента кода, которая преобразует биты в строку,но я не могу понять это. Сервер всегда падает, когда я его использую.Моя функция немного отличается от этой, но это потому, что мой текущий код должен включать информацию о соединении, и я думаю, что есть лучший способ сделать это:
byte[] b = new byte[100];
int k = s.Receive(b);
string packet = null;
for (int i = 0; i < k; i++)
{
Console.Write(Convert.ToChar(b[i]));
packet = packet + Convert.ToChar(b[i]);
}
Я думаю, что функция непроблема, но как я это использую.Любая помощь будет очень признательна.
Редактировать: я звоню и использую ее так:
byte[] b = new byte[100];
string response = BitConvert(b);
if (response == "Hi there")
# 2 Я хочу, чтобы клиент всегда отправлял пакет только один раз, с паролем. И если этот пароль не совпадает с паролем, указанным в качестве строки на сервере, он должен закрыть соединение с клиентом.
Я знаю, как отправить пакет только один раз, но я не знаю, как проверить пакет на сервере только один раз для каждого клиента.
Или, другими словами, на данный момент сервер не может узнать, был ли клиент уже аутентифицирован.Поэтому я полагаю, что клиент должен иметь своего рода идентификатор сокета, а серверу нужна таблица с идентификатором и логическое значение, чтобы увидеть, аутентифицирован ли он или нет.