using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
namespace SocketTest
{
public class AsynSocket_Client
{
public static Socket client;
public static string IP= "192.168.1.110";
public static int Port= 20108;
public static string ReciveInfo = "";
/// <summary>
/// 连接到服务器
/// </summary>
public static void AsynConnect()
{
//端口及IP
IPEndPoint ipe = new IPEndPoint(IPAddress.Parse(IP), Port);
//创建套接字
client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//开始连接到服务器
client.BeginConnect(ipe, asyncResult =>
{
client.EndConnect(asyncResult);
AsynRecive(client);
}, null);
}
/// <summary>
/// 发送消息
/// </summary>
/// <param name="socket"></param>
/// <param name="message"></param>
public static void AsynSend(Socket socket, string message)
{
if (socket == null || message == string.Empty) return;
byte[] data = Encoding.UTF8.GetBytes(message);
try
{
socket.BeginSend(data, 0, data.Length, SocketFlags.None, asyncResult =>
{
//完成发送消息
int length = socket.EndSend(asyncResult);
Console.WriteLine(string.Format("客户端发送消息:{0}", message));
}, null);
}
catch (Exception ex)
{
Console.WriteLine("异常信息:{0}", ex.Message);
}
}
/// <summary>
/// 接收消息
/// </summary>
/// <param name="socket"></param>
public static void AsynRecive(Socket socket)
{
byte[] data = new byte[1024];
try
{
//开始接收数据
socket.BeginReceive(data, 0, data.Length, SocketFlags.None,
asyncResult =>
{
int length = socket.EndReceive(asyncResult);
Console.WriteLine(string.Format("收到服务器消息:{0}", Encoding.UTF8.GetString(data)));
ReciveInfo = Encoding.UTF8.GetString(data);
AsynRecive(socket);
}, null);
}
catch (Exception ex)
{
Console.WriteLine("异常信息:", ex.Message);
}
}
}
}
应用于socket通讯连接服务并发送和接收数据,可以生成dll文件,应用于Unity开发socket通讯。
注:应用于Unity时请使用Unity2017以上版本设置Api Compatibility Level为.net4.6