版权声明:欢迎分享 https://blog.csdn.net/qq_42791845/article/details/83338732
public class SocketClient
{
//声明IP,端口,和一个用来连接的Socket
private string _ip;
private int _port;
private System.Net.Sockets.TcpClient _tcpClient;
//创建一个委托,用来满足其他类调用
public delegate void DelegateMessage(byte[] bytes) ;
public event DelegateMessage OnmessageEvent;
/// <summary>
/// 构造函数
/// </summary>
/// <param name="remoteIp">IP地址</param>
/// <param name="remotePort">端口号</param>
public SocketClient(string remoteIp,int remotePort)
{
this._ip = remoteIp;
this._port = remotePort;
}
//TCP连接
public bool Connect()
{
_tcpClient = new TcpClient();
try
{
_tcpClient.Connect(IPAddress.Parse(_ip), _port);
Task.Run(new Action(ReceiveMessage));//开启线程,不停接收消息
}
catch (Exception e)
{
Console.WriteLine(e);
throw;
}
return true;//返回连接状态
}
/// <summary>
/// 发送消息
/// </summary>
/// <param name="bytes">需要发送的字节</param>
public void SendMessage(byte[] bytes)
{
NetworkStream networkStream = _tcpClient.GetStream();
networkStream.Write(bytes, 0, bytes.Length);
}
//接收消息
public void ReceiveMessage()
{
NetworkStream networkStream = _tcpClient.GetStream();
while (true)
{
byte[] buffer = new byte[8];
int size = networkStream.Read(buffer, 0, buffer.Length);
OnmessageEvent?.Invoke(buffer);
}
}
}