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();
}
}
}