Java VB.Net套接字与Android套接字通信

Java VB.Net套接字与Android套接字通信,java,android,vb.net,Java,Android,Vb.net,我正在尝试使用套接字在android应用程序和VB.net应用程序之间进行通信。VB应用程序连接到socket正常,但我面临的问题是,当我调用stream.Dispose时,VB.net应用程序仅将数据发送到连接的android socket 下面是我的Android和VB.net代码 安卓: class Thread1 implements Runnable { @Override public void run() { Socket socket;

我正在尝试使用套接字在android应用程序和VB.net应用程序之间进行通信。VB应用程序连接到socket正常,但我面临的问题是,当我调用stream.Dispose时,VB.net应用程序仅将数据发送到连接的android socket

下面是我的Android和VB.net代码

安卓:

class Thread1 implements Runnable {

    @Override
    public void run() {
        Socket socket;
        try {
            serverSocket = new ServerSocket(SERVER_PORT);

            try {
                socket = serverSocket.accept();
                input = new BufferedReader(new InputStreamReader(socket.getInputStream(),"UTF-8"));
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        txtviewIP.setText("Connected");
                    }
                });
                new Thread(new Thread2()).start();
            } catch (IOException e) {
                e.printStackTrace();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

private class Thread2 implements Runnable {
        boolean bKeepRunning = true;

    @Override
    public void run() {
        while (bKeepRunning) {
            try {
                final String message = input.readLine();
                if (message != null) {
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {

                            Log.d("Message", "Command Received: " + message);
                            if (message.equalsIgnoreCase("A")) {
                                DoSomething();
                                bKeepRunning = false;
                            }
                        }
                    });
                }

            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        try {
            serverSocket.close();

            Thread1 = new Thread(new Thread1());
            Thread1.start();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
VB.Net:

Dim clientSocket As New System.Net.Sockets.TcpClient()
Dim ipAddress As String
Dim port As String = "9877"
Dim serverStream As NetworkStream
Dim bConnected As Boolean = False

Public Function Connect() As Boolean

    Try
        clientSocket.Connect(ipAddress, port)

        serverStream = clientSocket.GetStream()
        bConnected = True
    Catch ex As Exception
        bConnected = False

    Finally

    End Try

    Connect = bConnected

End Function

Public Sub SendToServer(text As String)
    'Dim serverStream As NetworkStream = clientSocket.GetStream()
    Dim outStream As Byte() = System.Text.Encoding.UTF8.GetBytes(text)
    serverStream.Write(outStream, 0, outStream.Length)
    serverStream.Flush()

    'till this point no data is sent.
    'as soon as I call dispose or close data is sent 
    serverStream.Close() OR serverStream.Dispose()
    
    'Have also tried below code but this also do not work and behaves in the same way as above
    Dim stream As StreamWriter = New StreamWriter(serverStream, System.Text.Encoding.UTF8)
    stream.AutoFlush = True
    stream.Write(text)
    stream.Flush()
    'Data is sent as soon as the below line is executed
    Stream.Close()
End Sub

目前还不清楚客户发送了什么。请告诉我。或者更好:在代码中显示。
“数据在执行下一行时立即发送。
不这样认为。数据已发送。但在关闭客户端套接字时,服务器端接收到数据。@blackapps客户端可以发送任何字符串。是的,这是一个问题,数据发送时没有收到。我不希望每次需要发送数据时都连接并关闭套接字。因此,我们需要这方面的帮助。当我在java中使用套接字时,同样的事情也可以正常工作。但是我需要在VB.net
中实现这一点,客户端可以发送任何字符串因此在这方面需要帮助。
的确如此。如果被问到,那么给出准确的答案。这是不好的,因为这不是一条线。服务器试图读取一行,因此您必须发送一行。行是以新行字符结尾的字符串
\n
。您可以更改为“Play:Video1.mp4\n”或在write()时添加换行符。