我正在努力掌握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个输出,我不知道它来自何处。任何帮助都会很棒。
答案 0 :(得分:1)
好的,答案发布在Google群组上的julia-users群组中。事实证明,8是roll的返回值,在REPL输出中没有被抑制。