using System; using System.Collections.Generic; using System.Linq; using System.Net.Sockets; using System.Net; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Shapes; using System.Threading; namespace SocketExample { /// /// ClientWindow.xaml 的交互逻辑 /// public partial class ClientWindow : Window { IPAddress ip; int port; TcpClient client; NetworkStream stream; Thread thread; public ClientWindow() { InitializeComponent(); } private void Button_Click(object sender, RoutedEventArgs e) { try { ip = IPAddress.Parse(IPtextbox.Text); port = int.Parse(Porttextbox.Text); client = new TcpClient(); // 开始监听 client.Connect(ip, port); thread = new Thread(Recive); thread.IsBackground = true; thread.Start(); } catch (Exception ex) { Dispatcher.Invoke(() => { InfoTextBlock_Client.Text += $"处理请求时出错: {ex.Message}\n"; }); } } private void Button_Click_Send(object sender, RoutedEventArgs e) { try { string message = MessageTextBox_Client.Text; // 如果发送"exit"则退出 if (message.ToLower() == "exit") { stream.Close(); client.Close(); thread.Abort(); } else { byte[] data = Encoding.UTF8.GetBytes(message); stream.Write(data, 0, data.Length); } } catch (Exception ex) { Dispatcher.Invoke(() => { InfoTextBlock_Client.Text += $"处理请求时出错: {ex.Message}\n"; }); } } void Recive() { stream = client.GetStream(); while (true) { // 处理客户端请求 try { // 接收响应 byte[] buffer = new byte[1024]; int bytesRead = stream.Read(buffer, 0, buffer.Length); string response = Encoding.UTF8.GetString(buffer, 0, bytesRead); Dispatcher.Invoke(() => { this.InfoTextBlock_Client.Text += $"服务器响应: {response}\n"; }); } catch (Exception ex) { Dispatcher.Invoke(() => { InfoTextBlock_Client.Text += $"处理请求时出错: {ex.Message}\n"; }); } } // 关闭连接 } } }