using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
using System.Windows;
using System.Windows.Controls;
//client
namespace WpfApplication2
{
///
/// MainWindow.xaml 的交互逻辑
///
public partial class MainWindow : Window
{
private NetworkStream _networkStream;
private TcpClient _tcpClient;
public MainWindow()
{
InitializeComponent();
}
private void _发送消息按钮(object sender, RoutedEventArgs e)
{
_networkStream = _tcpClient.GetStream();
var inputBox = FindName("InputBox") as TextBox;
var bytes = Encoding.Default.GetBytes(inputBox.Text);
_networkStream.Write(bytes, 0, bytes.Length);
}
private void ReadNetworkStream()
{
while (true)
{
while (_networkStream != null &&
_networkStream.CanRead &&
_networkStream.DataAvailable)
{
var bytes = new byte[_tcpClient.ReceiveBufferSize];
var numberOfBytesRead = 0;
var msg = new StringBuilder();
do
{
numberOfBytesRead = _networkStream.Read(bytes, 0, bytes.Length);
msg.AppendFormat("{0}", Encoding.Default.GetString(bytes, 0, numberOfBytesRead));
} while (_networkStream.DataAvailable);
Dispatcher.Invoke(() =>
{
var txtLable = FindName("ReceiveText") as TextBox;
txtLable.Text += msg.ToString();
});
}
}
}
private void _连接(object sender, RoutedEventArgs e)
{
_tcpClient = new TcpClient();
IPAddress ipAddress = null;
var ipTexBox = this.FindName("IPInput") as TextBox;
IPAddress.TryParse(ipTexBox.Text, out ipAddress);
_tcpClient.Connect(ipAddress, 8888);
_networkStream = _tcpClient.GetStream();
var t = new Thread(() => { ReadNetworkStream(); });
t.Start();
}
}
}
本文介绍了一个使用WPF框架实现的简单客户端程序,该程序能够通过TCP协议与服务器进行双向通信。客户端可以发送消息到服务器,并能接收来自服务器的消息。文章展示了如何使用System.Net命名空间下的TcpClient和NetworkStream类来完成这一过程。
1765

被折叠的 条评论
为什么被折叠?



