mirror of
https://gitee.com/jisol/jisol-game/
synced 2025-06-26 03:14:47 +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;
|
||
}
|
||
}
|
||
} |