首页 文章

为什么TcpClient.Connected()在被TcpListener关闭后显示为true? F#

提问于
浏览
0

所以我试图通过F#了解更多关于TCP的知识,当我在1秒后关闭来自监听器端的连接时,它仍然显示客户端在客户端端连接 .

服务器:

open System.Net
open System.Net.Sockets
open System.Threading

let tcpListener = new TcpListener(IPAddress.Parse("127.0.0.1"), 1000)

let rec listen() =
    printfn "Listening..."

    let tcpClient = tcpListener.AcceptTcpClient()
    printfn "Connected!"

    Thread.Sleep(1000)

    tcpClient.Close()
    printfn "Disconnected."

    listen()

tcpListener.Start()
listen()

客户:

open System
open System.Net.Sockets
open System.Threading

let connect() =
    let tcpClient = new TcpClient("127.0.0.1", 1000)
    printfn "Connected!"

    let rec loop() =
        Thread.Sleep(100)

        let isConnected = tcpClient.Connected

        if isConnected = false then
            printfn "Disconnected."
        else
            loop()

    Console.Read() |> ignore

connect()

1 回答

  • 1

    看来你永远不会调用 loop 函数,因此它实际上从未检查过连接 .

相关问题