Android聊天应用程序在模拟器中运行良好,但在实际设备中运行不正常
我已经开发了一个简单的聊天应用程序后,互联网教程。该聊天应用程序在模拟器中运行良好,但当我连接到设备时,它会运行,但不会在我的serverpc和真实设备之间发送消息。我已经在下面发布了我的TcpClient.java文件:Android聊天应用程序在模拟器中运行良好,但在实际设备中运行不正常,android,Android,我已经开发了一个简单的聊天应用程序后,互联网教程。该聊天应用程序在模拟器中运行良好,但当我连接到设备时,它会运行,但不会在我的serverpc和真实设备之间发送消息。我已经在下面发布了我的TcpClient.java文件: package com.example.mychat; import android.util.Log; import java.io.*; import java.net.InetAddress; import java.net.Socket; public class
package com.example.mychat;
import android.util.Log;
import java.io.*;
import java.net.InetAddress;
import java.net.Socket;
public class TCPClient {
private String serverMessage;
public static final String SERVERIP = "192........";// this is the ip of my real device.
public static final int SERVERPORT = 4444;
private OnMessageReceived mMessageListener = null;
private boolean mRun = false;
PrintWriter out;
BufferedReader in;
/* Constructor of the class. OnMessagedReceived listens for the messages received from server*/
public TCPClient(OnMessageReceived listener) {
mMessageListener = listener;
}
/** Sends the message entered by client to the server
* @param message text entered by client*/
public void sendMessage(String message){
if (out != null && !out.checkError()) {
out.println(message);
out.flush();
}
}
public void stopClient(){
mRun = false;
}
public void run() {
mRun = true;
try {
//here you must put your computer’s IP address.
InetAddress serverAddr = InetAddress.getByName(SERVERIP);
Log.e("TCP Client", "C: Connecting…");
//create a socket to make the connection with the server
Socket socket = new Socket(serverAddr, SERVERPORT);
try {
//send the message to the server
out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true);
Log.e("TCP Client", "C: Sent.");
Log.e("TCP Client", "C: Done.");
//receive the message which the server sends back
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
//in this while the client listens for the messages sent by the server
while (mRun) {
serverMessage = in.readLine();
if (serverMessage != null && mMessageListener != null) {
//call the method messageReceived from MyActivity class
mMessageListener.messageReceived(serverMessage);
}
serverMessage = null;
}
Log.e("RESPONSE FROM SERVER", "S: Received Message: '" + serverMessage + "'");
} catch (Exception e) {
Log.e("TCP", "S: Error", e);
} finally {
//the socket must be closed. It is not possible to reconnect to this socket
// after it is closed, which means a new socket instance has to be created.
socket.close();
}
} catch (Exception e) {
Log.e("TCP", "C: Error", e);
}
}
//Declare the interface. The method messageReceived(String message) will must be implemented in the MyActivity
//class at on asynckTask doInBackground
public interface OnMessageReceived {
public void messageReceived(String message);
}
}
Can anyone plz help?
你真正的安卓设备和你的服务器在同一个网络上吗?换句话说,它是否通过同一个Wifi AP连接?是的。两者都在同一个网络上。它是通过同一个wifi连接的。它实际上是连接到服务器,还是您的套接字连接失败?您是否已尝试将Wireshark连接到网络,以查看设备将发送/发送哪些数据包?