に私はコンソールアプリで正常に動作しますが、私はアプリWindowsフォームでそれを使用しようとすると、それが起動しないSocket client = listener.AcceptSocket();
tcplistenerとクライアントが同じフォームアプリ
でこのコードの動作が停止しているようだ、このコードを持っています実行されているコードが忙しいときでも、コンソール出力に続けます
public Form1()
{
InitializeComponent();
Listen();
}
public void Listen()
{
try
{
IPAddress ipAddress = IPAddress.Parse("127.0.0.1");
Console.WriteLine("Starting TCP listener...");
TcpListener listener = new TcpListener(ipAddress, 1302);
listener.Start();
while (true)
{
Console.WriteLine("Server is listening on " + listener.LocalEndpoint);
Console.WriteLine("Waiting for a connection...");
Socket client = listener.AcceptSocket(); // <----- PROBLEM
Console.WriteLine("Connection accepted.");
Console.WriteLine("Reading data...");
byte[] data = new byte[100];
int size = client.Receive(data);
Console.WriteLine("Recieved data: ");
for (int i = 0; i < size; i++)
Console.Write(Convert.ToChar(data[i]));
Console.WriteLine();
client.Close();
}
listener.Stop();
}
catch (Exception e)
{
Console.WriteLine("Error: " + e.StackTrace);
Console.ReadLine();
}
}
private void button1_Click(object sender, EventArgs e)
{
if (richTextBox1.Text != "")
{
textToSend = richTextBox1.Text;
run = true;
}
else
{
MessageBox.Show("Box Cant Be Empty");
run = false;
}
if (run)
{
try
{
TCPclient = new TcpClient(SERVER_IP, PORT_NO);
nwStream = TCPclient.GetStream();
}
catch
{
}
byte[] bytesToSend = ASCIIEncoding.ASCII.GetBytes(textToSend);
//---send the text---
MessageBox.Show("Sending : " + textToSend);
nwStream.Write(bytesToSend, 0, bytesToSend.Length);
}
}
ok iveを実行しても機能しましたが、そのスレッド外の変数を変更するにはどうすればよいですか? fx。 MessageBox.Show();またはListBox1.Items.Add(); –
親切に質問を編集し、何が必要なのかを説明してください –
説明したスレッド以外の変数を変更する必要がある場合、その説明はかなり良いです –