【问题标题】:Java(Kotlin) Socket Server. Read continouslyJava(Kotlin) 套接字服务器。连续阅读
【发布时间】:2018-07-03 19:01:36
【问题描述】:

我的服务器读数如下所示:

private fun init() {
        val inStream = BufferedInputStream(socket.getInputStream())
        val bytes = ByteArray(bufferSize)

        outStream = DataOutputStream(socket.getOutputStream())


        while (true) {
            val count = inStream.read(bytes, 0, bufferSize)

            if (count >= 0) {
                server.onReceive(this, bytes, count)
            }

        }
    }

第一次读取会等到收到字节。但第二个不等。并且循环永远运行并且计数为-1。我只想在收到字节时读取它们。

【问题讨论】:

  • 在循环之前声明var count并且只重新分配里面的值?
  • @Pawel 为什么?这会有什么不同?

标签: java sockets server kotlin


【解决方案1】:

循环一直在运行

您在流的末尾循环播放。如果count 为-1,则应关闭套接字并退出循环。

计数为-1

正是我的观点。

【讨论】:

  • 假设我的客户发送了消息。服务器打开连接,关闭。客户端再次发送。服务器再次打开和关闭?什么是最好的方法?客户端将发送许多消息。每次服务器应该打开和关闭连接?
  • 这是一个新问题,它对这个答案没有任何影响,但最好让服务器循环读取和响应请求,直到客户端关闭连接。然后客户端可以决定每个请求使用一个持久连接还是一个新连接。持久性更好,但另一方面,客户端不应长时间占用空闲连接。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-11
  • 2016-03-10
  • 2011-08-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多