学校のプロジェクト用にサーバー/クライアント アプリケーションを作成しようとしています。
特定のポートにサーバーがあり、複数のユーザーが接続されており、各ユーザーには独自のユーザー名があります。
接続しようとするユーザーが有効なユーザー名を使用しているかどうかを確認したいと思います。たとえば、ユーザー名 A を持つユーザーが既に接続されている場合、接続を希望する新しいユーザーはユーザー名 A を使用できません。
これが発生すると、サーバーは新しいクライアントにエラー コードで応答します。
この部分のコードは次のとおりです。
private void Receive()
{
while (true)
{
byte[] buffer = new byte[64];
socket.Receive(buffer);
string received = Encoding.Default.GetString(buffer);
if (received.IndexOf("!error") != -1)
{
string[] mySplit = received.Split(':');
string errorCode = mySplit[1].Trim((char)0);
if (errorCode == "user exists")
{
richTextBox1.AppendText("Your connection was refused by server, because there's already another user connected with the username you choose");
socket.Disconnect(true);
connectBtn.Enabled = true;
}
}
}
}
これを実行しようとすると、プログラムがクラッシュし、Visual Studio から に無効なクロススレッド操作があると表示されrichTextBox1
ます。