客户端连接服务器
using System.Net.Sockets;
using System.Net;
Socket clientSocket = null;
string ip = "192.168.1.2", myIP = "192.168.1.1";
int port = 8080;
EndPoint myPoint = new IPEndPoint(IPAddress.Parse(myIP), 0);
EndPoint point = new IPEndPoint(IPAddress.Parse(ip), port);
public Boolean Connect()
{
Console.Write("连接中...");
clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
try
{
clientSocket.Bind(myPoint);
clientSocket.Connect(point);
Console.WriteLine("连接成功!");
return true;
}
catch (Exception ex)
{
Console.WriteLine($"连接异常:\n{ex}");
clientSocket.Close();
clientSocket.Dispose();
return false;
}
}
发送消息
定义
public async Task<int> Send(byte[] msg)
{
if (clientSocket is null || !clientSocket.Connected) while (!Connect()) ;
int len = await Task<int>.Run(() => clientSocket.Send(msg));
Console.WriteLine("发送成功!");
return len;
}
应用
Task<int> len = siExecutor.Send(bytes);
Console.Write($"已发送长度:{len.Result}");
接收消息
定义
public async Task<byte[]> Receive(int toReadLen)
{
if (clientSocket is null || !clientSocket.Connected) while (!Connect()) ;
byte[] rawData = new byte[toReadLen];
int len = await Task<int>.Run(() => clientSocket.Receive(rawData, 0, toReadLen, SocketFlags.None));
return rawData;
}
应用
Task<byte[]> rawData = siExecutor.Receive(14);
Console.WriteLine(BitConverter.ToString(rawData.Result);)