ユーザー入力を取得する前にTCP接続が閉じられています

フイ:

TCP接続を待機し、ユーザーからの入力を読み取るようにサーバーを設定しました。

func main() {
  err := godotenv.Load()
  if err != nil {
    log.Fatal(err)
  }

  server, err := net.Listen("tcp", ":"+os.Getenv("PORT"))

  if err != nil {
    log.Fatal(err)
  }

  log.Println("HTTP Server Listening on port :", os.Getenv("PORT"))
  defer server.Close()

  for {
    conn, err := server.Accept()
    if err != nil {
      log.Fatal(err)
    }
    go handleConn(conn)
  }
}

私が抱えている問題は私のhandleConn職務です。追加のデータ処理があるので、入力をgoroutineに読み込むことから始めたいと思います。ただし、サーバーに接続すると(nc localhost 9000)、接続がすぐに切断されます。

func handleConn(conn net.Conn) {
  defer conn.Close()
  io.WriteString(conn, "Enter a transaction:")

  scanner := bufio.NewScanner(conn)

  go func() {
    for scanner.Scan() {
      log.Println("User entered: ")
      log.Println(scanner.Text())
    }

  }()
}

メッセージEnter a transaction:表示されますが、接続がすぐに終了してbashターミナルに戻るため、何も入力できません。ここで何が悪いのですか?

編集:私はこのチュートリアルをフォローしています-https: //github.com/mycoralhealth/blockchain-tutorial/blob/master/networking/main.go

私はscanner.Scan()ゴルーチンの外に移動してみましたが、これは機能しますが、ここのコード例はゴルーチン内にあり、彼の例は機能します。これはなぜですか?

カルロスゴメス:

handleConnfuncでゴルーチンをスポーンしているので、何かが返されるのを待つ必要がないため、遅延オブジェクトがconn.Close()実行され、接続が閉じます。scanner.Scan()入力待ちをブロックするために、ゴルーチンを使い果たす必要があるかもしれません

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

データベースへの挿入が完了する前に接続が閉じられました

分類Dev

ループバックnodejsで、保存する前に月が同じユーザーIDで入力されていることを確認します

分類Dev

外部接続のためにポートが閉じられています

分類Dev

タイマーを使用してインターフェイスを更新し、「この接続に関連付けられている開いているDataReaderがすでにあり、最初に閉じる必要があります」を取得し続けます。

分類Dev

ユーザーがまだ入力している間に非同期で入力の値を取得する

分類Dev

ユーザー入力データを$ _SESSION配列に継続的にプッシュしてから取得するにはどうすればよいですか?

分類Dev

Javaによるユーザー入力とデモ接続に基づいて、2つのNICからIPアドレスを動的に選択します

分類Dev

ユーザーが入力した名前を、名前配列に格納されているすべての名前と比較します

分類Dev

データベースによって接続が閉じられている場合、手動で閉じる必要がありますか?

分類Dev

トランザクションをロールバックするときの例外-接続はすでに閉じられていますか?

分類Dev

ユーザーが番号を入力するまでユーザーから入力を取得する

分類Dev

ユーザーがJavaに正しい入力を入力するまで、ユーザーから入力を取得するにはどうすればよいですか?

分類Dev

ユーザーが「EXIT」と入力すると、プログラムが閉じて、以前のすべての入力が表示されます。

分類Dev

ツイストPythonを使用してサーバーへの接続をリッスンしながらユーザー入力を取得する

分類Dev

入力の名前にスペースが含まれている場合、入力から値を取得するにはどうすればよいですか?

分類Dev

SQL接続を閉じずにデータを継続的に入力する

分類Dev

Python:ユーザー入力を使用してwhileループを閉じたり続行したりする方法

分類Dev

gitでssh_exchange_identificationを取得するのはなぜですか:リモートホストによって接続が閉じられましたか?

分類Dev

ポートでTCPパケットをリッスンすると、接続が閉じたときにのみデータが読み取られます

分類Dev

ユーザーが「Exit」と入力したときにユーザー入力を入れて配列に格納したいのですが、ユーザーが入力した名前を昇順で出力する必要があります。ヒントはありますか?

分類Dev

ユーザーが入力した li を ul から配列に取得しようとしています

分類Dev

ユーザーが入力する限り、ユーザーから整数を取得するにはどうすればよいですか?

分類Dev

リソースを適切に閉じているにもかかわらず、MYSQLがデータを取得する接続が多すぎる

分類Dev

ユーザーからの入力を取得するプログラムを作成すると、特定の入力ごとに特定の出力が得られます

分類Dev

ユーザーがeofを使用してEnterキーを押すまで、ユーザーから入力整数を取得するにはどうすればよいですか?

分類Dev

TCP接続がネットパッケージで閉じられていることを知る方法は?

分類Dev

TCPはサーバーが最初に接続を閉じ、クライアントが最初に接続を閉じるようにします

分類Dev

ユーザーの入力文字列が同じように逆に読み取られているかどうかを確認する方法(回文)JAVA

分類Dev

ユーザー入力なしでUIAlertControllerを作成して閉じるにはどうすればよいですか?(迅速)

Related 関連記事

  1. 1

    データベースへの挿入が完了する前に接続が閉じられました

  2. 2

    ループバックnodejsで、保存する前に月が同じユーザーIDで入力されていることを確認します

  3. 3

    外部接続のためにポートが閉じられています

  4. 4

    タイマーを使用してインターフェイスを更新し、「この接続に関連付けられている開いているDataReaderがすでにあり、最初に閉じる必要があります」を取得し続けます。

  5. 5

    ユーザーがまだ入力している間に非同期で入力の値を取得する

  6. 6

    ユーザー入力データを$ _SESSION配列に継続的にプッシュしてから取得するにはどうすればよいですか?

  7. 7

    Javaによるユーザー入力とデモ接続に基づいて、2つのNICからIPアドレスを動的に選択します

  8. 8

    ユーザーが入力した名前を、名前配列に格納されているすべての名前と比較します

  9. 9

    データベースによって接続が閉じられている場合、手動で閉じる必要がありますか?

  10. 10

    トランザクションをロールバックするときの例外-接続はすでに閉じられていますか?

  11. 11

    ユーザーが番号を入力するまでユーザーから入力を取得する

  12. 12

    ユーザーがJavaに正しい入力を入力するまで、ユーザーから入力を取得するにはどうすればよいですか?

  13. 13

    ユーザーが「EXIT」と入力すると、プログラムが閉じて、以前のすべての入力が表示されます。

  14. 14

    ツイストPythonを使用してサーバーへの接続をリッスンしながらユーザー入力を取得する

  15. 15

    入力の名前にスペースが含まれている場合、入力から値を取得するにはどうすればよいですか?

  16. 16

    SQL接続を閉じずにデータを継続的に入力する

  17. 17

    Python:ユーザー入力を使用してwhileループを閉じたり続行したりする方法

  18. 18

    gitでssh_exchange_identificationを取得するのはなぜですか:リモートホストによって接続が閉じられましたか?

  19. 19

    ポートでTCPパケットをリッスンすると、接続が閉じたときにのみデータが読み取られます

  20. 20

    ユーザーが「Exit」と入力したときにユーザー入力を入れて配列に格納したいのですが、ユーザーが入力した名前を昇順で出力する必要があります。ヒントはありますか?

  21. 21

    ユーザーが入力した li を ul から配列に取得しようとしています

  22. 22

    ユーザーが入力する限り、ユーザーから整数を取得するにはどうすればよいですか?

  23. 23

    リソースを適切に閉じているにもかかわらず、MYSQLがデータを取得する接続が多すぎる

  24. 24

    ユーザーからの入力を取得するプログラムを作成すると、特定の入力ごとに特定の出力が得られます

  25. 25

    ユーザーがeofを使用してEnterキーを押すまで、ユーザーから入力整数を取得するにはどうすればよいですか?

  26. 26

    TCP接続がネットパッケージで閉じられていることを知る方法は?

  27. 27

    TCPはサーバーが最初に接続を閉じ、クライアントが最初に接続を閉じるようにします

  28. 28

    ユーザーの入力文字列が同じように逆に読み取られているかどうかを確認する方法(回文)JAVA

  29. 29

    ユーザー入力なしでUIAlertControllerを作成して閉じるにはどうすればよいですか?(迅速)

ホットタグ

アーカイブ