简单易用的C# Socket通信项目,适合初学者,附带完整代码和示例,带有断线重连和实时状态监测功能
以下是一个简单的C# Socket通讯项目的核心部分代码,包括了TCP客户端和服务器的初始化,以及实现了断线重连和实时接收消息的功能。
using System;
using System.Net.Sockets;
using System.Text;
using System.Threading;
using System.Windows.Forms;
public class TcpClientExample
{
private TcpClient tcpClient;
private NetworkStream networkStream;
private bool isConnected;
public void Connect(string host, int port)
{
tcpClient = new TcpClient();
tcpClient.NoDelay = true;
try
{
tcpClient.Connect(host, port);
networkStream = tcpClient.GetStream();
isConnected = true;
// 启动接收线程
Thread thread = new Thread(new ThreadStart(ReceiveData));
thread.IsBackground = true;
thread.Start();
// 连接成功后的操作,例如UI更新等
// ...
}
catch (SocketException)
{
// 错误处理
// ...
}
}
private void ReceiveData()
{
while (isConnected)
{
if (networkStream.DataAvailable)
{
byte[] dataBuffer = new byte[1024];
int bytesRead = networkStream.Read(dataBuffer, 0, dataBuffer.Length);
string receivedData = Encoding.UTF8.GetString(dataBuffer, 0, bytesRead);
// 处理接收到的数据
// ...
}
else
{
// 没有数据可读,可以暂时休眠线程
Thread.Sleep(100);
}
}
}
public void SendData(string data)
{
if (isConnected)
{
byte[] dataBytes = Encoding.UTF8.GetBytes(data);
networkStream.Write(dataBytes, 0, dataBytes.Length);
}
}
public void Disconnect()
{
isConnected = false;
tcpClient.Close();
// 断开连接后的操作,例如UI更新等
// ...
}
}
// 使用方法
// TcpClientExample client = new TcpClientExample();
// client.Connect("127.0.0.1", 8000);
// client.SendData("Hello Server!");
// ...
// client.Disconnect();
这段代码提供了一个简单的TCP客户端实现,包括连接、发送和接收数据的方法。它使用了TcpClient
来管理网络连接,NetworkStream
来进行流式数据的读写,并且使用了后台线程来实时接收服务器发送的数据
评论已关闭