我写了使用Scala的远程参与者的程序。我的第一步是创建一个通过环回(127.0.0.1)进行通信的客户端和服务器,并且它运行良好。当我尝试在同一网络上的两个工作站之间进行通信时,服务器不会捕获任何东西。我在本地和远程客户端程序之间改变的唯一一件事是服务器的IP地址。远程演员的工作只能在本地主机
下面是客户端代码:
case class Post(msg: String)
object Client extends Application {
val client = new ClientRemote
client.sendMessage
}
class ClientRemote extends Actor {
val server = select(Node("127.0.0.1", 9010), 'name) //' or server IP
def sendMessage(): Unit = {
server ! Post("Hello!")
}
def act() {
// do something
}
}
这里是服务器代码:
case class Post(msg: String)
object Server extends Application {
val server = new ServerRemote
server.start
}
class ServerRemote extends Actor {
def act() {
alive(9010)
println("server is started!")
register('name, self) //' register to port
loop {
react {
case Post(msg) => println(msg)
}
}
}
}
有谁知道为什么这些程序不”工作或有关解决方案的任何想法?
感谢
谢谢,这是非常有益的。 错误是:抓java.io.InvalidClassException:scala.actors.remote.Node;局部类不兼容:流classdesc的serialVersionUID = -4252948855987918585,本地类的serialVersionUID = -7525549079045563153 我认为这是一个序列化的问题。 – reevolt 2011-04-26 10:23:42
我认为这将指出乌米在另一个答案中所说的。 Post类是分开定义的两次,所以每个版本都有自己的UID。相反,定义Post一次,并将该类文件包含在服务器和客户端中。 – Kevin 2011-04-26 22:29:43
谢谢你,我会尝试 – reevolt 2011-04-28 08:34:26