winform tcp demo
时间: 2023-09-11 07:09:53 浏览: 40
以下是一个基本的 WinForm TCP 示例,它演示了如何使用 C# 中的 TcpListener 和 TcpClient 类建立一个简单的服务器和客户端:
服务器:
```csharp
using System;
using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace ServerDemo
{
public partial class Form1 : Form
{
private TcpListener listener;
private TcpClient client;
public Form1()
{
InitializeComponent();
}
private async void btnStart_Click(object sender, EventArgs e)
{
listener = new TcpListener(IPAddress.Parse(txtHost.Text), int.Parse(txtPort.Text));
listener.Start();
AddLog("Server started.");
client = await listener.AcceptTcpClientAsync();
AddLog("Client connected.");
var stream = client.GetStream();
while (true)
{
byte[] buffer = new byte[1024];
int bytesRead = await stream.ReadAsync(buffer, 0, buffer.Length);
string message = Encoding.UTF8.GetString(buffer, 0, bytesRead);
AddLog($"Received: {message}");
byte[] response = Encoding.UTF8.GetBytes($"Server received: {message}");
await stream.WriteAsync(response, 0, response.Length);
}
}
private void AddLog(string message)
{
txtLog.AppendText($"{message}\r\n");
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
listener?.Stop();
client?.Close();
}
}
}
```
客户端:
```csharp
using System;
using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace ClientDemo
{
public partial class Form1 : Form
{
private TcpClient client;
public Form1()
{
InitializeComponent();
}
private async void btnConnect_Click(object sender, EventArgs e)
{
client = new TcpClient();
await client.ConnectAsync(txtHost.Text, int.Parse(txtPort.Text));
AddLog("Connected to server.");
var stream = client.GetStream();
while (true)
{
string message = txtMessage.Text;
byte[] buffer = Encoding.UTF8.GetBytes(message);
await stream.WriteAsync(buffer, 0, buffer.Length);
AddLog($"Sent: {message}");
buffer = new byte[1024];
int bytesRead = await stream.ReadAsync(buffer, 0, buffer.Length);
message = Encoding.UTF8.GetString(buffer, 0, bytesRead);
AddLog($"Received: {message}");
}
}
private void AddLog(string message)
{
txtLog.AppendText($"{message}\r\n");
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
client?.Close();
}
}
}
```
上述示例仅供参考,实际应用中需要根据具体需求进行修改。