This is a clone of a question on Stackoverflow (original here:
http://stackoverflow.com/questions/27585013/extra-data-on-socket-communication-in-julia
)
I'm working on getting a grip on socket programming in Julia, and I'm
getting, what seems to me at least, a really weird bug. This is my testing
program:
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
The output this generates looks like this:
julia> roll(9884)
8104588522876597874
-8585609018870996947
57
35
35
-2674324649969450471
-7370669957356464799
6388910330871895635
-4817888634766788568
-4381550835994661230
8
-8151987627137122115
Where is that 8 coming from? No matter how many extra copies of
`write(clientside,0)` I put in there, there is always an 8 output in the
second to last line, and I have no clue where it is coming from. Any help
would be great.