0
我写了一些scala代码,用于洗牌。ServerSocket关闭原因不明
代码如下,但serverSocket关闭意外,serverSocket将启动(我观察使用netsta),但过了一段时间,它将被关闭。
private val conManagerThread = new Thread("connection-manager-thread") {
override def run() = ConnectionManager.this.run()
}
conManagerThread.setDaemon(true)
conManagerThread.start()
def run() {
val serverSocket = new ServerSocket(port, 0, InetAddress.getByName(Utils.localHostName))
try{
//while(!conManagerThread.isInterrupted) {
while(true) {
try {
logInfo("start listening client ")
val clientSocket = serverSocket.accept()
logInfo("accept a client")
serverPool.execute(new ServerConnection(clientSocket, id, onReceiveCallback)) //TODO: the conId maybe a remote id, so we should get it from the msg
}
catch {
case e: Exception => logError("Error in serverSocket accept", e)
logError("Error in serverSocket accept")
}
}
}
catch {
case e: Exception => logError("Error in serverPool execute", e)
logError("Error in serverPool execute")
}
finally{
logInfo("=====\nserver closed\n=========")
}
和一个ServerConnection就像是以下几点:
class ServerConnection(client : Socket, conId: ConnectionManagerId,
onReceiveCallback: (BufferMessage, ConnectionManagerId) => Option[Message])
extends Runnable with Logging{
def run(){
//some other code
}
}
感谢您的回答。我按照你的建议稍后尝试,但问题仍然存在。 – Djvu 2014-12-08 06:26:51