C# 服务器客户端应用程序
这是我的服务器代码我有一个问题,因为我的程序冻结,不知道什么是错误的C# 服务器客户端应用程序,c#,winforms,sockets,tcp,C#,Winforms,Sockets,Tcp,这是我的服务器代码我有一个问题,因为我的程序冻结,不知道什么是错误的 private void button1_Click(object sender, EventArgs e) { if (button1.Text == "Listen") { tcpl = new TcpListener(IPAddress.Any, 5555); tcpl.Start(); try
private void button1_Click(object sender, EventArgs e)
{
if (button1.Text == "Listen")
{
tcpl = new TcpListener(IPAddress.Any, 5555);
tcpl.Start();
try
{
// get random word from text
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "Txt |*.txt";
ofd.Title = "Tekst";
if (ofd.ShowDialog() == DialogResult.OK)
{
String[] myString = File.ReadAllLines(ofd.FileName);
textBox1.Text = myString[r.Next(myString.Length)];
}
Socket socketForClient = tcpl.AcceptSocket();
if (socketForClient.Connected)
{
MessageBox.Show("Client connected" + socketForClient.RemoteEndPoint.ToString());
NetworkStream networkStream = new NetworkStream(socketForClient);
StreamWriter sw = new StreamWriter(networkStream);
StreamReader sr = new StreamReader(networkStream);
string line = sr.ReadLine();
richTextBox1.Text = "Accepted: " + line;
line = line.ToUpper();
sw.WriteLine(line);
richTextBox1.Text = "Sended : " + line;
sw.Flush();
}
socketForClient.Close();
}
catch (SocketException ex)
{
MessageBox.Show(ex.Message);
}
button1.Text = "stop";
}
else
{
tcpl.Stop();
MessageBox.Show("Disconnected");
button1.Text = "Listen";
}
我的程序冻结行:socketsocketforclient=tcpl.AcceptSocket();不知道为什么。我是在学校的一个例子上写的。感谢您的帮助。AcceptSocket()
是一个阻塞调用,仅在客户端连接后返回。
如果在UI线程中调用,UI将冻结
您需要在后台线程上执行此操作。Metro?WinForms?WPF?银灯?ASP.Net?MonoTouch?它看起来不像WPF,因为它们有RoutedEventArgs,ASP.NET没有OpenFileDialog或MessageBox类。。。我猜是Windows窗体。