如何在 F# 中使用 TcpListener NetworkStream?
Posted
技术标签:
【中文标题】如何在 F# 中使用 TcpListener NetworkStream?【英文标题】:How to use TcpListener NetworkStream in F#? 【发布时间】:2019-01-19 01:25:26 【问题描述】:我正在尝试从此处https://msdn.microsoft.com/en-us/library/system.net.sockets.tcplistener(v=vs.110).aspx 移植 C# 示例代码,但在读取数据部分时遇到了问题。 Byte[] bytes = new Byte[256];
应该怎么用F#写?
open System
open System.Net
open System.Net.Sockets
let ipAddress = IPAddress.Parse("127.0.0.1")
let port = 1000
let tcpListener = TcpListener(ipAddress, port)
let rec listen() =
printfn "Listening..."
let tcpClient = tcpListener.AcceptTcpClient()
printfn "Connected!"
let networkStream = tcpClient.GetStream()
// port Byte[] bytes = new Byte[256]; to F#
listen()
try
tcpListener.Start()
listen()
with
| error -> printfn "%s" error.Message
Console.Read() |> ignore
【问题讨论】:
【参考方案1】:您可以使用Array.zeroCreate
函数创建一个空数组。将其添加到您的代码中,listen
函数将如下所示:
let rec listen() =
let tcpClient = tcpListener.AcceptTcpClient()
let networkStream = tcpClient.GetStream()
let buffer = Array.zeroCreate 256
let read = networkStream.Read(buffer, 0, 256)
// Do something with 'buffer' and 'read'
listen()
【讨论】:
你可能想在AcceptTcpClient
调用分叉线程之后踢掉所有东西。否则,您的服务器将在您处理时停机。以上是关于如何在 F# 中使用 TcpListener NetworkStream?的主要内容,如果未能解决你的问题,请参考以下文章
为啥必须在 UWP 中使用 StreamSocketListener 而不是 TcpListener,尽管 UWP 是 .NET Core 的子集,而 TcpListener 在 UWP 中可用?