有没有更高端的写法
时间: 2023-11-16 12:13:51 浏览: 77
当然有,以下是使用 `async/await` 关键字实现异步 Socket 连接的高端写法:
```csharp
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;
class Program {
static async Task Main(string[] args) {
// 设置服务器IP和端口号
string serverIP = "192.168.1.100";
int serverPort = 8888;
// 创建一个 Socket 对象
using (Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)) {
try {
// 异步连接服务器
await socket.ConnectAsync(new IPEndPoint(IPAddress.Parse(serverIP), serverPort));
Console.WriteLine("连接服务器成功!");
// 向服务器发送数据
byte[] data = Encoding.UTF8.GetBytes("Hello, Server!");
await socket.SendAsync(new ArraySegment<byte>(data), SocketFlags.None);
// 接收服务器返回的数据
byte[] buffer = new byte[1024];
int length = await socket.ReceiveAsync(new ArraySegment<byte>(buffer), SocketFlags.None);
string message = Encoding.UTF8.GetString(buffer, 0, length);
Console.WriteLine("收到服务器消息:{0}", message);
}
catch (Exception ex) {
Console.WriteLine("连接服务器失败:" + ex.Message);
}
finally {
// 关闭Socket连接
socket.Shutdown(SocketShutdown.Both);
socket.Close();
}
}
Console.ReadKey();
}
}
```
说明:
1. 使用 `async/await` 关键字实现异步 Socket 连接和数据传输,提高了程序的并发处理能力和响应性能。
2. 使用 `using` 语句自动释放 Socket 资源,避免了资源泄漏问题。
阅读全文