nanoframework.System.Net.Sockets.TcpClient 1.1.83
前缀已保留
dotnet add package nanoframework.System.Net.Sockets.TcpClient --version 1.1.83
NuGet\Install-Package nanoframework.System.Net.Sockets.TcpClient -Version 1.1.83
<PackageReference Include="nanoframework.System.Net.Sockets.TcpClient" Version="1.1.83" />
paket add nanoframework.System.Net.Sockets.TcpClient --version 1.1.83
#r "nuget: nanoframework.System.Net.Sockets.TcpClient, 1.1.83"
// Install nanoframework.System.Net.Sockets.TcpClient as a Cake Addin #addin nuget:?package=nanoframework.System.Net.Sockets.TcpClient&version=1.1.83 // Install nanoframework.System.Net.Sockets.TcpClient as a Cake Tool #tool nuget:?package=nanoframework.System.Net.Sockets.TcpClient&version=1.1.83
欢迎访问 .NET nanoFramework System.Net.Sockets.TcpClient
此 API 实现了与官方 .NET 相似的 TcpListener 和 TcpClient 类模式。 System.NET.Sockets.TcpClient.
这些是用于 TCP 连接的 Socket 的包装类。nanoframework 实现的 TcpClient 不包括异步方法和 Connected 属性。
构建状态
组件 | 构建状态 | NuGet 包 |
---|---|---|
nanoFramework.System.Net.Sockets.TcpClient |
使用方法
重要: 显然这需要一个正常工作的网络连接。请检查有关如何连接到网络的示例,例如参阅 Networking 示例包
TcpListener
类提供了创建监听套接字以接受传入的 TCP 连接的简单方法,而 TcpClient
则提供了连接和进行 TCP 连接通信的方法。
示例
TcpListener
和 TcpClient
的示例可以在 nanoFramework 示例仓库中找到。
监听传入连接
以下代码展示如何设置监听套接字并在 1234 端口上作为 TcpClient 接受连接。
TcpListener listener = new TcpListener(IPAddress.Any, 1234);
// Start listening for incoming connections
listener.Start();
while (true)
{
try
{
// Wait for incoming connections
TcpClient client = listener.AcceptTcpClient();
NetworkStream stream = client.GetStream();
Byte[] bytes = new Byte[256];
int i;
// Wait for incoming data and echo back
while((i = stream.Read(bytes, 0, bytes.Length))!=0)
{
// Do something with data ?
stream.Write(bytes, 0, i);
}
// Shutdown connection
client.Close();
}
catch(Exception ex)
{
Debug.WriteLine($"Exception:-{ex.Message}");
}
}
如果您想处理一个以上的同时连接,则可以启动一个单独的工作线程。
TcpListener listener = new TcpListener(IPAddress.Any, 1234);
// Start listening for incoming connections with backlog
listener.Start(2);
while (true)
{
try
{
// Wait for incoming connections
TcpClient client = listener.AcceptTcpClient();
// Start thread to handle connection
Thread worker = new Thread(() => WorkerThread(client));
worker.Start();
}
catch(Exception ex)
{
Debug.WriteLine($"Exception:-{ex.Message}");
}
}
TcpListener 示例中用于处理TcpClient连接的工作线程。
private static void WorkerThread(TcpClient client)
{
try
{
NetworkStream stream = client.GetStream();
Byte[] bytes = new Byte[256];
int i;
// Loop reading data until connection closed
while((i = stream.Read(bytes, 0, bytes.Length))!=0)
{
// Do something with data ?
// Write back received data bytes to stream
stream.Write(bytes, 0, i);
}
}
catch(Exception ex)
{
Debug.WriteLine($"Exception:-{ex.Message}");
}
finally
{
// Shutdown connection
client.Close();
}
}
TcpClient
TcpClient 还可以使用主机名/端口或 IPEndPoint 来发起连接。例如连接到另一个监听连接的 nanoFramework 设备。
TcpClient client = new TcpClient()
try
{
client.Connect(hostname, port)
NetworkStream stream = client.GetStream();
// Write / Read data on stream
// for example Write 'ABC' and wait for response
byte[] writeData = new byte[] { 0x41, 0x42, 0x43 };
stream.Write(writeData, 0, writeData.Length);
// Read reply and close
byte[] buffer = new byte[1024];
int bytesRead = stream.Read(buffer, 0, buffer.Length);
// Process read data ?
}
catch(SocketException sx)
{
Console.WriteLine($"Socket error:{sx.ErrorCode} exception:{sx.Message}");
}
finally
{
client.Close();
}
对于安全连接,可以使用 SslStream
。
client.Connect(HostName, 443);
// Create SSlStream from underlying SOcket
SslStream stream = new SslStream(client.Client);
// Don't verify Server certificate for this sample code
stream.SslVerification = SslVerification.NoVerification;
stream.AuthenticateAsClient(HostName, SslProtocols.Tls12);
// stream.Write() or stream.Read()
反馈和文档
有关文档、提供反馈、问题以及了解如何贡献,请参阅 主页仓库。
加入我们的 Discord 社区 这里。
鸣谢
此项目的贡献者列表可在 CONTRIBUTORS 中找到。
许可协议
nanoframework 类库采用 MIT 许可协议。
行为准则
本项目采纳了贡献者公约定义的行为准则,以明确我们社区中预期的行为。有关更多信息,请参阅 .NET Foundation 行为准则。
.NET Foundation
此项目由 .NET Foundation 支持。
-
- nanoFramework.CoreLibrary >= 1.15.5
- nanoFramework.System.IO.Streams >= 1.1.59
- nanoFramework.System.Net >= 1.11.1
NuGet 包
此包未使用任何 NuGet 包。
GitHub 仓库
此包未使用任何流行的 GitHub 仓库。
版本 | 下载 | 最后更新 |
---|---|---|
1.1.83 | 57 | 7/29/2024 |
1.1.77 | 101 | 5/13/2024 |
1.1.74 | 127 | 4/8/2024 |
1.1.72 | 87 | 4/3/2024 |
1.1.69 | 140 | 1/29/2024 |
1.1.67 | 86 | 1/26/2024 |
1.1.64 | 231 | 11/10/2023 |
1.1.62 | 103 | 11/9/2023 |
1.1.59 | 99 | 11/9/2023 |
1.1.52 | 475 | 12/28/2022 |
1.1.50 | 295 | 12/28/2022 |
1.1.48 | 287 | 12/27/2022 |
1.1.45 | 289 | 12/23/2022 |
1.1.37 | 532 | 10/26/2022 |
1.1.35 | 360 | 10/26/2022 |
1.1.33 | 387 | 10/26/2022 |
1.1.31 | 363 | 10/25/2022 |
1.1.29 | 356 | 10/24/2022 |
1.1.27 | 392 | 10/24/2022 |
1.1.25 | 382 | 10/23/2022 |
1.1.23 | 386 | 10/23/2022 |
1.1.20 | 407 | 10/8/2022 |
1.1.17 | 415 | 9/22/2022 |
1.1.15 | 434 | 9/22/2022 |
1.1.13 | 425 | 9/15/2022 |
1.1.8 | 384 | 8/4/2022 |
1.1.6 | 387 | 8/4/2022 |
1.1.4 | 390 | 8/3/2022 |
1.1.2 | 385 | 8/3/2022 |
1.0.0.23 | 417 | 7/20/2022 |
1.0.0.21 | 425 | 6/13/2022 |
1.0.0.19 | 417 | 6/8/2022 |
1.0.0.14 | 412 | 5/26/2022 |
1.0.0.12 | 407 | 5/18/2022 |
1.0.0.10 | 402 | 5/3/2022 |
1.0.0 | 436 | 3/29/2022 |
1.0.0-preview.12 | 120 | 3/29/2022 |
1.0.0-preview.9 | 117 | 3/17/2022 |
1.0.0-preview.7 | 108 | 3/14/2022 |
1.0.0-preview.5 | 111 | 3/14/2022 |
1.0.0-preview.3 | 117 | 2/23/2022 |