Julia中关于套接字通信的额外数据

时间:2014-12-20 22:42:33

标签: sockets network-programming julia

我正在努力掌握Julia中的套接字编程,而且至少在我看来,这是一个非常奇怪的错误。这是我的测试程序:

function startServer(port::Integer)
    server=listen(port)
    while true
        sock=accept(server)
        @async while true
            sig=read(sock,Int64)
            if sig==0
                write(sock,rand(Int64))
            elseif sig==1
                raw=read(sock,Int64)
                write(sock,raw+1)
            end
        end
    end
end

function dumbwrite(connection)
    while true
        kappa=read(connection,Int64)
        println(STDOUT,kappa)
    end
end

function roll(port::Integer)
    @spawn startServer(port)
    clientside=connect(port)
    @spawn dumbwrite(clientside)

    write(clientside,0)
    write(clientside,0)
    write(clientside,1)
    write(clientside,56)
    write(clientside,1)
    write(clientside,34)
    write(clientside,1)
    write(clientside,34)
    write(clientside,0)
    write(clientside,0)
    write(clientside,0)
    write(clientside,0)
    write(clientside,0)
    write(clientside,0)
end

此生成的输出如下所示:

julia> roll(9884)
8104588522876597874
-8585609018870996947
57
35
35
-2674324649969450471
-7370669957356464799
6388910330871895635
-4817888634766788568
-4381550835994661230
8
-8151987627137122115

8来自哪里?无论我放入多少write(clientside,0)个副本,在倒数第二行总是有8个输出,我不知道它来自何处。任何帮助都会很棒。

1 个答案:

答案 0 :(得分:1)

好的,答案发布在Google群组上的julia-users群组中。事实证明,8是roll的返回值,在REPL输出中没有被抑制。