mirror of
https://gitee.com/jisol/jisol-game/
synced 2025-06-26 11:24:46 +00:00
34 lines
1010 B
C#
34 lines
1010 B
C#
|
|
|||
|
using System;
|
|||
|
using System.Net.Sockets;
|
|||
|
using System.Threading.Tasks;
|
|||
|
|
|||
|
namespace JNGame.Util
|
|||
|
{
|
|||
|
public class NetTool
|
|||
|
{
|
|||
|
public static async Task SendAsync(Socket socket, byte[] buffer)
|
|||
|
{
|
|||
|
// 注意:这里我们实际上并没有直接使用async/await,因为BeginSend是回调模式
|
|||
|
// 但我们可以使用TaskCompletionSource来桥接回调和async/await
|
|||
|
var tcs = new TaskCompletionSource<int>();
|
|||
|
|
|||
|
// 异步发送数据
|
|||
|
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;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|