Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.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
如何修复与Java/scala(客户端)通信的Ruby(服务器)死锁_Java_Ruby_Scala_Sockets_Rjb - Fatal编程技术网

如何修复与Java/scala(客户端)通信的Ruby(服务器)死锁

如何修复与Java/scala(客户端)通信的Ruby(服务器)死锁,java,ruby,scala,sockets,rjb,Java,Ruby,Scala,Sockets,Rjb,如果服务器在Ruby上,而客户机在Scala上,则通过TCPSocket发送数据时会出现问题 Scala总是在.readInt()中的处停止。这看起来像是死锁,但Ruby服务器正在使用线程运行 如果Ruby是客户端,Scala是服务器,那么就没有问题 红宝石: 需要“套接字” 需要“rjb” load(“#{ENV['SCALA_HOME']}/lib/SCALA library.jar:SCALA.jar”) Rjb.primitive_转换=真 ScalaObject=Rjb.import(

如果服务器在Ruby上,而客户机在Scala上,则通过TCPSocket发送数据时会出现问题

Scala总是在.readInt()中的
处停止。这看起来像是死锁,但Ruby服务器正在使用线程运行

如果Ruby是客户端,Scala是服务器,那么就没有问题

红宝石:

需要“套接字”
需要“rjb”
load(“#{ENV['SCALA_HOME']}/lib/SCALA library.jar:SCALA.jar”)
Rjb.primitive_转换=真
ScalaObject=Rjb.import('ruby.ScalaObject')
@端口=零
t=线程。新do
server=TCPServer.new(0)
@port=server.addr[1]
连接=server.accept
将“ruby:received#{connection.read(4).unpack('l>).first}”放入
发送=5
放入“ruby:sending{to_send}”
connection.write([to_send].pack('l>))
连接。冲洗
结束
而@port.nil?
睡眠(0.1)
结束
ScalaObject.start(@port)
t、 加入
斯卡拉:

包ruby
导入java.io_
导入java.net_
对象缩放对象{
def启动(端口:Int){
val套接字=新套接字(“本地主机”,端口)
val out=新的DataOutputStream(新的BufferedOutputStream(socket.getOutputStream,65536))
val in=新的DataInputStream(新的BufferedInputStream(socket.getInputStream,65536))
val to_send=4
println(“scala:sending”+to_send.toString())
out.writeInt(发送)
冲水
println(“scala:received”+in.readInt())
}
}