gpt4 book ai didi

sockets - Julia TCP选择

转载 作者:行者123 更新时间:2023-12-03 11:51:46 24 4
gpt4 key购买 nike

TCP连接有一个问题。

我做了像这样的服务器:

 server = listen(5000)
sock = accept(server)
while isopen(sock)
yes=read(sock,Float64,2)
println(yes)
end

我希望在没有要读取的内容时它将连续打印[0.0,0.0],否则它将打印从服务器读取的内容。
如果没有要读取的内容或崩溃,它将进入循环(尝试读取内容)。
我尝试用类似的任务来做到这一点:
begin
server = listen(5000)
while true
sock = accept(server)
while isopen(sock)
yes=read(sock,Float64,2)
println(yes)
end
println([0.0,0.0])
end
end

但这只会打印其读取的内容。我正在与其他控制台建立连接并通过consol进行骑行:
clientside=connect(5000)
write(clientside,[2.0,2.0])

因此,我尝试使服务器输出[0.0,0.0],如果没有要读取的内容,并且在有需要读取的内容时将打印读取的内容。
有什么好主意吗?

最佳答案

也许,使服务器成为一种策略是异步运行accept / print块(因为accept调用会阻塞主线程)。

按照"Using TCP Sockets in Julia"教程制作服务器的一种方法是:

notwaiting = true
server = listen(5000)
while true
if notwaiting
notwaiting = false
# Runs accept async (does not block the main thread)
@async begin
sock = accept(server)
ret = read(sock, Float64, 2)
println(ret)
global notwaiting = true
end
end
println([0.0, 0.0])
sleep(1) # slow down the loop
end

变量 notwaiting使 async块每个连接仅运行一次(如果没有,服务器将运行一种“竞争条件”)。

通过两次调用客户端程序对其进行测试,将产生以下输出:
C:\research\stackoverflow\EN-US>julia s.jl
[0.0,0.0]
[0.0,0.0]
[0.0,0.0]
[0.0,0.0]
[2.0,2.0]
[0.0,0.0]
[0.0,0.0]
[0.0,0.0]
[2.0,2.0]
[0.0,0.0]
[0.0,0.0]
[0.0,0.0]

已使用Julia版本0.5.0-rc3 + 0测试

关于sockets - Julia TCP选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39372430/

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