TCP-соединение для отправки и получения Java / Android с помощью Visual Basic .NET Server - PullRequest
0 голосов
/ 24 марта 2012

Я искал везде, чтобы найти ответ на этот вопрос:

В моем приложении для Android есть клиент TCP, который отправляет на сервер сообщение, написанное на Visual Basic .NET Framework 4.

Теперь я хочу отправить сообщение со своего сервера на телефон через 3G, он работает на Wi-Fi и 3G.

 private class startserver extends Thread
{
public void server() throws Exception
{
   String clientSentence;
   String capitalizedSentence;
   ServerSocket welcomeSocket = new ServerSocket(8765);

   while(true)
   {
      Socket connectionSocket = welcomeSocket.accept();
      BufferedReader inFromClient =
         new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));
      DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream());
      clientSentence = inFromClient.readLine();
      System.out.println(clientSentence.substring(1));
      msgshower = clientSentence.substring(1);
      MainActivity.this.runOnUiThread(new Runnable() {
          public void run() {
            Toast.makeText(MainActivity.this, "Received: " + msgshower , Toast.LENGTH_LONG).show();

          }
      });
      capitalizedSentence = clientSentence.toUpperCase() + '\n';
      outToClient.writeBytes(capitalizedSentence);
   }
}


@Override
public void run() {

    try {
        server();
    } catch (Exception e) {

        e.printStackTrace();
    }

}

Я запускаю его в методе OnCreate

Теперь я отправляю сообщение с (VB.NET)

Private Sub sends(ByVal message As String)
    Dim tcp As New TcpClient
    tcp.Connect(connectedIP, 8765)
    Dim bw As New IO.BinaryWriter(tcp.GetStream)
    bw.Write(message)
    bw.Close()
    tcp.Close()
End Sub

На вайфай прибудет, на 3г не будет ... есть идеи как это сделать?

Как другие приложения архивируют это?

Ответы [ 2 ]

0 голосов
/ 25 марта 2012

Я думаю, у вас проблемы с IP-адресом, назначенным вашим оператором мобильной связи.Я думаю, это связано с тем, что ваш мобильный телефон (при подключении через 3G) не имеет общедоступного IP-адреса.

Когда вы используете SocketServer в своем мобильном телефоне, вы 'открытие порта в ожидании подключения к нему других.Если ваш IP-адрес недоступен из Интернета, это не произойдет (это как если бы компьютер был за брандмауэром.)

Не могли бы вы попытаться внедрить сервер в компьютер VB, предполагая, что он имеет публичныйдостижимый адрес?Таким образом, телефон не будет выступать в качестве сервера, и не будет необходимости иметь доступный адрес, если он есть на машине VB.Затем следует использовать класс Socket для привязки к ip и порту сервера.

0 голосов
/ 25 марта 2012

Полностью смущен вашим списком кодов выше ..

Если вы хотите разместить сервер в VB.NET, вам следует не использовать TcpClient класс, а TcpListener, а если вам нужна более высокая производительность, используйте Socket класс напрямую.

На стороне клиента Android вы должны new Socket(server,servPort), когда вы хотите отправить сообщение, написать outputStream и прочитать inputStream для получения сообщения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...