【问题标题】:How to use TcpListener NetworkStream in F#?如何在 F# 中使用 TcpListener NetworkStream?
【发布时间】: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

【问题讨论】:

    标签: c# tcp f# porting tcplistener


    【解决方案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 调用分叉线程之后踢掉所有东西。否则,您的服务器将在您处理时停机。
    猜你喜欢
    • 2018-08-26
    • 2017-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-23
    • 2015-06-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多