Android聊天应用程序在模拟器中运行良好,但在真实设备中无效

时间:2014-03-23 02:32:48

标签: android

我根据互联网教程开发了一个简单的聊天应用程序。这个聊天应用程序在模拟器中工作正常,但当我连接到它运行的设备但它不会在我的服务器(PC)和真实设备之间发送消息。我在下面发布了我的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?

0 个答案:

没有答案
相关问题