using System; using System.Net.Sockets; using System.Threading.Tasks; namespace JNGame.Runtime.Util { public class NetTool { public static async Task SendAsync(Socket socket, byte[] buffer) { // 注意:这里我们实际上并没有直接使用async/await,因为BeginSend是回调模式 // 但我们可以使用TaskCompletionSource来桥接回调和async/await var tcs = new TaskCompletionSource(); // 异步发送数据 socket.BeginSend(buffer, 0, buffer.Length, SocketFlags.None, (ar) => { try { int bytesSent = socket.EndSend(ar); tcs.SetResult(bytesSent); } catch (Exception ex) { tcs.SetException(ex); } }, null); // 等待发送完成 await tcs.Task; } } }