使用Visual Basic .NET Server发送和接收Java / Android的TCP连接

时间:2012-03-24 18:12:08

标签: java android vb.net tcp

我到处寻找这个问题的答案:

我的android应用程序上有一个TCP客户端,它向服务器发送一条消息,该消息是用Visual Basic .NET Framework 4编写的。

现在我想从我的服务器发送一条消息到3g以上的手机,它适用于wifi和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

在wifi上它会到达,3g它不会......任何想法是如何做到的?

其他应用程序如何存档?

2 个答案:

答案 0 :(得分:0)

完全被上面的代码列表搞糊涂了..

如果你想在VB.NET中托管服务器,你应该使用TcpClient类但TcpListener,如果你需要更好的性能,请使用{{1直接上课。

在Android客户端,您应Socket,当您要发送消息时,请写new Socket(server,servPort),然后阅读outputStream以接收消息。

答案 1 :(得分:0)

我认为您的移动电话运营商所分配的IP地址存在问题。我认为这是因为您的手机(通过3G连接时)没有公共IP地址。

当您在移动设备中使用SocketServer时,您正在打开一个等待其他人连接的端口。如果您的IP地址无法通过互联网访问,则不会发生(这就像在防火墙后面安装计算机一样。)

您是否可以尝试在VB机器中实现服务器,假设它具有公共可达地址?这样,只要VB机器有一个,手机就不会充当服务器,也没有必要拥有可达的地址。然后,您应该使用Socket类绑定到服务器ip和端口。