Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sockets 朱莉娅TCP选择_Sockets_Julia - Fatal编程技术网

Sockets 朱莉娅TCP选择

Sockets 朱莉娅TCP选择,sockets,julia,Sockets,Julia,我有一个TCP连接问题 我制作了如下服务器: server = listen(5000) sock = accept(server) while isopen(sock) yes=read(sock,Float64,2) println(yes) end 我希望它在无需读取的情况下继续打印[0.0,0.0],否则它将打印从服务器读取的内容。 若并没有可读取的内容或它崩溃,这将转到循环(尝试读取某些内容)。 我尝试通过以下任务来完成此任务: begin

我有一个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
但这只会打印它读到的内容。我正在与其他控制台建立连接并通过控制台:

clientside=connect(5000)
write(clientside,[2.0,2.0])
所以我试着让服务器打印[0.0,0.0],若并没有要读取的内容,它会在有要读取的内容时打印它所读取的内容。
有什么好主意吗?

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

在本教程之后,创建服务器的一种方法是:

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测试

你是说TCP,对吗?不是TPC?花了我一段时间。哦!是的,我错了。这很好。一个问题仍然是,你只能发送一行与此。我尝试在循环写入连接时(如果可以的话),但侦听服务器只读取第一行。我也可以用这个,这是我想要的。谢谢