Почему TcpClient.Connected () показывает true после закрытия TcpListener?F # - PullRequest
0 голосов
/ 09 декабря 2018

Так что я пытаюсь узнать больше о TCP через F #, и когда я закрываю соединение со стороны слушателя через 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 Ответ

0 голосов
/ 09 декабря 2018

Кажется, что вы никогда не вызываете функцию loop, поэтому она никогда не проверяет соединение.

...