对于Android和pc的通信,有很多没有写好的东西,也借鉴了很多大佬写的程序,发出来算是一个集合,有很多不足之处,请各位大佬指点。
首先是pc端的服务器(运用ServerSocket去进行交互):
import java.io.*;
import java.net.*;
public class AndroidServer implements Runnable{
public static final String SERVERIP = "192.168.1.1";//你本机的ip地址
private final int SERVERPORT =8888;
private ServerSocket serverSocket;
private OutputStream fos;
@Override
public void run() {
try{
System.out.println("S:服务器启动!");
serverSocket = new ServerSocket(SERVERPORT);
while(true) {
Socket client = serverSocket.accept();
System.out.println("S: Receiving...已连接!ip:" + client.getInetAddress());
try{
BufferedReader in = new BufferedReader(
new InputStreamReader(client.getInputStream(),"utf-8"));
PrintWriter out = new PrintWriter(new BufferedWriter(
new OutputStreamWriter(client.getOutputStream(),"utf-8")),true);
String str = in.readLine();
if(str != null){
out.println("You sent to server message is:" + str);
out.flush();
File file = new File("android.txt");
fos = new FileOutputStream(file);
byte[] b = str.getBytes();
for(int i=0;i<b.length;i++){
fos.write(b[i]);
}
System.out.println("S: Received: '" + str + "'");
}else{
System.out.println("Not receiver anything from client!");
}
}catch (Exception e){
System.out.println("S: Error 1");
e.printStackTrace();
}finally{
client.close();
System.out.println("S: 结束.");
}
}
}catch (Exception e){
System.out.println("S: Error 2");
e.printStackTrace();
}
}
public static void main(String[] args) {
Thread sT = new Thread(new AndroidServer());
sT.start();
}
}
需要注意的地方就是UTF-8是为了中文不乱码。
Android端的客户端(socket):
package com.test.tcpudpsocket;
import java.io.*;
import java.net.*;
import android.support.v7.app.ActionBarActivity;
import android.annotation.SuppressLint;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
@SuppressLint("HandlerLeak")
public class TCPSocket_android extends ActionBarActivity {