Android聊天应用程序在模拟器中运行良好,但在实际设备中运行不正常

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

我已经开发了一个简单的聊天应用程序后,互联网教程。该聊天应用程序在模拟器中运行良好,但当我连接到设备时,它会运行,但不会在我的serverpc和真实设备之间发送消息。我已经在下面发布了我的TcpClient.java文件:

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连接到网络,以查看设备将发送/发送哪些数据包?