TCP示例
public static void appendToFile(File dir, String fileName) {
try (FileWriter writer = new FileWriter(new File(dir, fileName), true)) {
writer.write("Hello");
} catch(IOException e) {
e.printStackTrace();
}
}
要关闭连接,您需要调用@async begin
server = listen(2000)
while true
sock = accept(server)
println("Hello World\n")
end
end
方法:
close
如何阻止听众?
close(sock)
答案 0 :(得分:2)
不是继续评论,而是我认为你可能会尝试做的事情:
来自朱莉娅REPL:
julia> server = listen(2000)
Base.TCPServer(active)
julia> @async begin
while true
sock = accept(server)
print(readstring(sock))
end
end
来自另一个终端:
~ $ nc localhost 2000
Hello from the other terminal
[Ctrl-D] % i.e. signal end of file. this closes the connection
在julia repl中,您会在发送EOF信号后立即看到“来自其他终端的Hello”,否则julia提示将继续正常。如果从netcat终端重复此过程,您将再次看到REPL中打印的消息,因为套接字在while循环内不断重新激活。
理想情况下,如果您想关闭整个事情,首先要close(sock)
然后close(server)
。但是,您无法直接关闭套接字,因为它位于“while”循环中并且不断重新激活,并且您无法直接访问变量“sock”。
因此,您只能关闭服务器,完全可以预料到错误。 所以在try块中捕获它
@async begin
while true
try
sock = accept(server)
print(readstring(sock))
catch ex
print("exiting while loop")
break
end
end
end