gpt4 book ai didi

java - 客户端套接字读取 "freezes"

转载 作者:行者123 更新时间:2023-12-02 08:37:15 26 4
gpt4 key购买 nike

我想写一个简单的网络代理,作为练习。这是我到目前为止的代码:


def g = new Proxy()
g.serverPort = 9000
println "starting"
g.eachClient { Socket client ->
println "got a client"
try {
client.withStreams { input,output ->
String text = input.text
println "received $text from client"
client.close()
}
} catch(IOException io) {
println "IO error. Probably client disconnected"
//io.printStackTrace()
}
}

事情是这样的:

String text = input.text

消耗Socket的InputStream中的所有可用数据。如果客户端没有关闭连接,该方法将一直等待,直到它可以读取文件结束字符(如果我没记错的话)。我必须采取什么措施来防止这种情况发生,并尽快提供客户端的字符串?

最佳答案

我认为您需要查看 ObjectInputStream 上的文档。使用 length = input.available 获取当前可用字节数,然后使用 input.read(buffer, offset, length) 读取完全相同的数量字节可用。您可能希望为每个新连接启动一个新线程,以透明地在后台管理此缓冲区,除非您首先要创建单线程代理。

关于java - 客户端套接字读取 "freezes",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1240830/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com