【发布时间】:2009-08-06 19:21:02
【问题描述】:
我想写一个简单的网络代理,以供练习。这是我到目前为止的代码:
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 中的所有可用数据。如果客户端没有关闭连接,该方法将等到它可以读取文件结尾字符(如果我没记错的话)。我需要做些什么来防止这种情况发生,并尽快让客户的字符串可用?
【问题讨论】:
标签: java sockets proxy groovy stream