既存のWindowsフォームアプリケーション内に単純なTCP/IP通信を実装しようとしています。通信部分を構成するコードには無限のwhileループがあり、サーバーが常にクライアントをリッスンしていると思います。別のスレッドで実行する方法に少しこだわっていることを除けば、私のアプリケーションでは問題なく動作します。以下にコードを投稿します。
private TcpListener tcpListener;
private Thread listenThread;
private void Form1_Load(object sender, EventArgs e)
{
startServer();
}
private void startServer()
{
TcpListener serverSocket = new TcpListener(IPAddress.Parse("127.0.0.1"), 8888);
TcpClient clientSocket = default(TcpClient);
serverSocket.Start();
clientSocket = serverSocket.AcceptTcpClient();
while ((true))
{
try
{
NetworkStream networkStream = clientSocket.GetStream();
byte[] bytesFrom = new byte[10025];
networkStream.Read(bytesFrom, 0, (int)clientSocket.ReceiveBufferSize);
string dataFromClient = System.Text.Encoding.ASCII.GetString(bytesFrom);
dataFromClient = dataFromClient.Substring(0, dataFromClient.IndexOf("$"));
listBox1.Items.Add(" >> Data from client - " + dataFromClient);
string serverResponse = "Server acknowledges the request - " + dataFromClient;
Byte[] sendBytes = Encoding.ASCII.GetBytes(serverResponse);
networkStream.Write(sendBytes, 0, sendBytes.Length);
networkStream.Flush();
listBox1.Items.Add(" >> " + serverResponse);
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
}
この問題についてアドバイスをいただければ幸いです。ありがとうございました!