如果这个示例中的TCP服务器';还没关门吗?
顺便说一下,这是用Groovy编写的 我已经有一段时间没有弄乱我的TCP服务器脚本了,我决定让它保持打开状态,即使在使用之后也继续侦听,而不是只适合一次使用。但是,当我这样做时,它抛出一个异常,然后无论如何关闭脚本 我的示例脚本如下所示: TCP服务器如果这个示例中的TCP服务器';还没关门吗?,tcp,groovy,client,Tcp,Groovy,Client,顺便说一下,这是用Groovy编写的 我已经有一段时间没有弄乱我的TCP服务器脚本了,我决定让它保持打开状态,即使在使用之后也继续侦听,而不是只适合一次使用。但是,当我这样做时,它抛出一个异常,然后无论如何关闭脚本 我的示例脚本如下所示: TCP服务器 def server = new ServerSocket(2000) println("Waiting for connection") server.accept() { socket -> socket.
def server = new ServerSocket(2000)
println("Waiting for connection")
server.accept() { socket ->
socket.withStreams { input, output ->
w = new BufferedWriter(new OutputStreamWriter(output))
String message = "Connection was successful"
r = new BufferedReader(new InputStreamReader(input))
while(true) {
if(message !=null) {
sendMessage(message)
message = null
}
String a = r.readLine()
if(a.equals("name"))
message = "Bob"
else if(a.equals("date"))
message = new Date()
else if(a.equals("ip"))
message = InetAddress.getLocalHost().getHostAddress()
else if(a.equals("quit")) {
server.close()
return
} else
message = "$a command unknown"
}
}
}
def sendMessage(String msg) {
println("Sending: >" + msg + "<")
w.writeLine(msg)
w.flush();
}
有人知道保持服务器脚本运行的方法吗?我想我只是过于简单了。试着将服务器代码修改为:
def server = new ServerSocket(2000)
println("Waiting for connection")
while (true) {
server.accept() { socket ->
socket.withStreams { input, output ->
def w = new BufferedWriter(new OutputStreamWriter(output))
String message = "Connection was successful"
def r = new BufferedReader(new InputStreamReader(input))
while (true) {
if (message !=null) {
sendMessage(message, w)
message = null
}
String a = r.readLine()
if (a == null) {
socket.close()
println "Client disconnected"
return
} else if (a.equals("name")) {
message = "Bob"
} else if (a.equals("date")) {
message = new Date()
} else if (a.equals("ip")) {
message = InetAddress.getLocalHost().getHostAddress()
} else if (a.equals("quit")) {
server.close()
return
} else {
message = "$a command unknown"
}
}
}
}
}
def sendMessage(msg, writer) {
println("Sending: >" + msg + "<")
writer.writeLine(msg.toString())
writer.flush();
}
def server=newserversocket(2000)
println(“等待连接”)
while(true){
server.accept(){socket->
socket.withStreams{输入,输出->
def w=新的BufferedWriter(新的OutputStreamWriter(输出))
String message=“连接成功”
def r=新的BufferedReader(新的InputStreamReader(输入))
while(true){
如果(消息!=null){
发送消息(消息,w)
消息=null
}
字符串a=r.readLine()
如果(a==null){
socket.close()
println“客户端已断开连接”
返回
}如果(a.等于(“名称”)){
message=“Bob”
}如果(a.等于(“日期”)){
消息=新日期()
}否则,如果(a.等于(“ip”)){
message=InetAddress.getLocalHost().getHostAddress()
}否则,如果(a等于(“退出”)){
server.close()
返回
}否则{
message=“$a命令未知”
}
}
}
}
}
def sendMessage(消息,编写器){
println(“发送:>”+msg+”啊,谢谢@Binil-Thomas!你完全正确。我感谢你解释它为什么抛出异常。
def server = new ServerSocket(2000)
println("Waiting for connection")
while (true) {
server.accept() { socket ->
socket.withStreams { input, output ->
def w = new BufferedWriter(new OutputStreamWriter(output))
String message = "Connection was successful"
def r = new BufferedReader(new InputStreamReader(input))
while (true) {
if (message !=null) {
sendMessage(message, w)
message = null
}
String a = r.readLine()
if (a == null) {
socket.close()
println "Client disconnected"
return
} else if (a.equals("name")) {
message = "Bob"
} else if (a.equals("date")) {
message = new Date()
} else if (a.equals("ip")) {
message = InetAddress.getLocalHost().getHostAddress()
} else if (a.equals("quit")) {
server.close()
return
} else {
message = "$a command unknown"
}
}
}
}
}
def sendMessage(msg, writer) {
println("Sending: >" + msg + "<")
writer.writeLine(msg.toString())
writer.flush();
}