Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 服务器客户端应用程序_C#_Winforms_Sockets_Tcp - Fatal编程技术网

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窗体。