Java 如何在android手机上运行android聊天应用程序?
我已经为一个简单的聊天应用程序做了一个android应用程序。我使用命令提示符作为服务器,聊天是使用emulator作为客户端完成的。当我们使用WIFI将apk放入手机时,该应用程序不起作用。Android客户端程序如下所示 包edu.UTEP.androidJava 如何在android手机上运行android聊天应用程序?,java,android,Java,Android,我已经为一个简单的聊天应用程序做了一个android应用程序。我使用命令提示符作为服务器,聊天是使用emulator作为客户端完成的。当我们使用WIFI将apk放入手机时,该应用程序不起作用。Android客户端程序如下所示 包edu.UTEP.android import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;
public class AndyChatActivity extends Activity {
private Handler handler = new Handler();
public ListView msgView;
public ArrayAdapter<String> msgList;
// public ArrayAdapter<String> msgList=new ArrayAdapter<String>(this,
// android.R.layout.simple_list_item_1);;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
msgView = (ListView) findViewById(R.id.listView);
msgList = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1);
msgView.setAdapter(msgList);
// msgView.smoothScrollToPosition(msgList.getCount() - 1);
Button btnSend = (Button) findViewById(R.id.btn_Send);
receiveMsg();
btnSend.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(AndyChatActivity.this, "here", Toast.LENGTH_SHORT).show();
final EditText txtEdit = (EditText) findViewById(R.id.txt_inputText);
String msg=txtEdit.getText().toString();
Toast.makeText(AndyChatActivity.this, msg, Toast.LENGTH_SHORT).show();
//msgList.add(txtEdit.getText().toString());
sendMessageToServer(txtEdit.getText().toString());
msgView.smoothScrollToPosition(msgList.getCount() - 1);
}
});
//receiveMsg();
//----------------------------
//server msg receieve
//-----------------------
//End Receive msg from server//
}
public void sendMessageToServer(String str) {
final String str1=str;
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
//String host = "https://www.tudens.in";
String host="192.168.1.5";
//Toast.makeText(AndyChatActivity.this, "thread Opened", Toast.LENGTH_SHORT).show();
//String host2 = "127.0.0.1";
PrintWriter out;
try {
Socket socket = new Socket(host, 8008);
out = new PrintWriter(socket.getOutputStream());
Log.d("1", "good");
// out.println("hello");
out.println(str1);
Log.d("2", "gd");
out.flush();
Log.d("", "hello");
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
Log.d("", "hello222");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
Log.d("", "hello4333");
}
}
}).start();
}
public void receiveMsg()
{
new Thread(new Runnable()
{
@Override
public void run() {
// TODO Auto-generated method stub
final String host="192.168.1.5";
//final String host="10.0.2.2";
//final String host="localhost";
Socket socket = null ;
BufferedReader in = null;
try {
socket = new Socket(host,8008);
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
while(true)
{
String msg = null;
try {
msg = in.readLine();
Log.d("","MSGGG: "+ msg);
//msgList.add(msg);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(msg == null)
{
break;
}
else
{
displayMsg(msg);
}
}
}
}).start();
}
public void displayMsg(String msg)
{
final String mssg=msg;
handler.post(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
msgList.add(mssg);
msgView.setAdapter(msgList);
msgView.smoothScrollToPosition(msgList.getCount() - 1);
Log.d("","hi");
}
});
}
}
导入java.io.BufferedReader;
导入java.io.IOException;
导入java.io.InputStreamReader;
导入java.io.PrintWriter;
导入java.net.Socket;
导入java.net.UnknownHostException;
导入android.app.Activity;
导入android.os.Bundle;
导入android.os.Handler;
导入android.util.Log;
导入android.view.view;
导入android.widget.ArrayAdapter;
导入android.widget.Button;
导入android.widget.EditText;
导入android.widget.ListView;
导入android.widget.Toast;
public class和ychatActivity扩展了活动{
私有处理程序=新处理程序();
公共列表视图msgView;
公共阵列适配msgList;
//public ArrayAdapter msgList=新的ArrayAdapter(此,
//android.R.layout.simple_list_item_1);;
/**在首次创建活动时调用*/
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
msgView=(ListView)findViewById(R.id.ListView);
msgList=新阵列适配器(此,
android.R.layout.simple\u list\u item\u 1);
msgView.setAdapter(msgList);
//msgView.smoothScrollToPosition(msgList.getCount()-1);
按钮btnSend=(按钮)findviewbyd(R.id.btn\u Send);
receiveMsg();
btnSend.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根
Toast.makeText(AndyChatActivity.this,“here”,Toast.LENGTH_SHORT.show();
final EditText txtEdit=(EditText)findViewById(R.id.txt\u inputText);
字符串msg=txtEdit.getText().toString();
Toast.makeText(AndyChatActivity.this,msg,Toast.LENGTH_SHORT).show();
//添加(txtEdit.getText().toString());
sendMessageToServer(txtEdit.getText().toString());
msgView.smoothScrollToPosition(msgList.getCount()-1);
}
});
//receiveMsg();
//----------------------------
//服务器消息接收
//-----------------------
//结束从服务器接收消息//
}
public void sendMessageToServer(字符串str){
最终字符串str1=str;
新线程(newrunnable()){
@凌驾
公开募捐{
//TODO自动生成的方法存根
//字符串主机=”https://www.tudens.in";
字符串host=“192.168.1.5”;
//Toast.makeText(AndyChatActivity.this,“线程已打开”,Toast.LENGTH_SHORT.show();
//字符串host2=“127.0.0.1”;
打印输出;
试一试{
插座=新插座(主机,8008);
out=新的PrintWriter(socket.getOutputStream());
日志d(“1”,“良好”);
//out.println(“你好”);
out.println(str1);
日志d(“2”,“gd”);
out.flush();
Log.d(“,”你好“);
}捕获(未知后异常e){
//TODO自动生成的捕捉块
e、 printStackTrace();
Log.d(“,”hello222”);
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
Log.d(“,”hello4333”);
}
}
}).start();
}
public void receiveMsg()
{
新线程(newrunnable())
{
@凌驾
公开募捐{
//TODO自动生成的方法存根
最终字符串host=“192.168.1.5”;
//最终字符串host=“10.0.2.2”;
//最后一个字符串host=“localhost”;
套接字=空;
BufferedReader in=null;
试一试{
插座=新插座(主机,8008);
}捕获(未知后异常e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
试一试{
in=新的BufferedReader(新的InputStreamReader(socket.getInputStream());
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
while(true)
{
字符串msg=null;
试一试{
msg=in.readLine();
Log.d(“,”MSGGG:“+msg”);
//msgList.add(msg);
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
如果(msg==null)
{
打破
}
其他的
{
displayMsg(msg);
}
}
}
}).start();
}
public void displayMsg(字符串消息)
{
最终字符串mssg=msg;
handler.post(新的Runnable(){
@凌驾
公开募捐{
//TODO自动生成的方法存根
msgList.add(mssg);
msgView.setAdapter(msgList);
msgView.smoothScrollToPosition(msgList.getCount()-1);
import java.io.*;
import java.net.*;
import java.util.*;
/**
* A simple chat server implemented using TCP/IP sockets. A client can
* connect to this server and send messages to other clients. The chat
* server receives messages from clients and broadcast them to all the
* connected clients. A message is an arbitrary text and is also
* printed on stdout. The default port number is 8008.
*
* <pre>
* Usage: java ChatServer
* </pre>
*
* @author Yoonsik Cheon
*/
public class ChatServer {
private static final String USAGE = "Usage: java ChatServer";
/** Default port number on which this server to be run. */
private static final int PORT_NUMBER = 8008;
/** List of print writers associated with current clients,
* one for each. */
private List<PrintWriter> clients;
/** Creates a new server. */
public ChatServer() {
clients = new LinkedList<PrintWriter>();
}
/** Starts the server. */
public void start() {
System.out.println("AndyChat server started on port "
+ PORT_NUMBER + "!");
try {
ServerSocket s = new ServerSocket(PORT_NUMBER);
for (;;) {
Socket incoming = s.accept();
new ClientHandler(incoming).start();
}
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("AndyChat server stopped.");
}
/** Adds a new client identified by the given print writer. */
private void addClient(PrintWriter out) {
synchronized(clients) {
clients.add(out);
}
}
/** Adds the client with given print writer. */
private void removeClient(PrintWriter out) {
synchronized(clients) {
clients.remove(out);
}
}
/** Broadcasts the given text to all clients. */
private void broadcast(String msg) {
for (PrintWriter out: clients) {
out.println(msg);
out.flush();
}
}
public static void main(String[] args) {
if (args.length > 0) {
System.out.println(USAGE);
System.exit(-1);
}
new ChatServer().start();
}
/** A thread to serve a client. This class receive messages from a
* client and broadcasts them to all clients including the message
* sender. */
private class ClientHandler extends Thread {
/** Socket to read client messages. */
private Socket incoming;
/** Creates a hander to serve the client on the given socket. */
public ClientHandler(Socket incoming) {
this.incoming = incoming;
}
/** Starts receiving and broadcasting messages. */
public void run() {
PrintWriter out = null;
try {
out = new PrintWriter(
new OutputStreamWriter(incoming.getOutputStream()));
// inform the server of this new client
ChatServer.this.addClient(out);
out.print("Welcome to AndyChat! ");
out.println("Enter BYE to exit.");
out.flush();
BufferedReader in
= new BufferedReader(
new InputStreamReader(incoming.getInputStream()));
for (;;) {
String msg = in.readLine();
if (msg == null) {
break;
} else {
if (msg.trim().equals("BYE"))
break;
System.out.println("Received: " + msg);
// broadcast the receive message
ChatServer.this.broadcast(msg);
}
}
incoming.close();
ChatServer.this.removeClient(out);
} catch (Exception e) {
if (out != null) {
ChatServer.this.removeClient(out);
}
e.printStackTrace();
}
}
}
}