удаленный актер работает только на localhost - PullRequest
1 голос
/ 21 апреля 2011

Я написал программу с использованием удаленных актеров 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)
      }
    }
  }
}

Кто-нибудь знает, почему эти программы не работают или есть какие-либо идеи орешение?

спасибо

Ответы [ 2 ]

0 голосов
/ 22 апреля 2011

Я знаю больше о Java, чем о Scala, но возможно ли, чтобы загрузчик классов считал ваши повторяющиеся определения класса Post case разными *?

0 голосов
/ 22 апреля 2011

Вы можете добавить «scala.actors.Debug.level = 3» в начале кода клиента и сервера, чтобы получить больше информации о том, что делает подсистема актера.Это скажет вам, например, было ли сообщение получено, но отброшено, или прослушивалось ли оно на другом порту, чем вы думали, и т. Д.

...