Java VB.Net套接字与Android套接字通信
我正在尝试使用套接字在android应用程序和VB.net应用程序之间进行通信。VB应用程序连接到socket正常,但我面临的问题是,当我调用stream.Dispose时,VB.net应用程序仅将数据发送到连接的android socket 下面是我的Android和VB.net代码 安卓: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;
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()时添加换行符。