事實上和JavaWeb 里面的Socket一模一樣
建立客服端,server端,server開一個port供客服端訪問
第一步創建server端:(這里把為了便於解說。把server端,和客服端都放在手機上了)
創建Androidproject
socketserver
package com.example.socketserver; import java.io.IOException; import java.io.InputStream; import java.net.ServerSocket; import java.net.Socket; import android.os.AsyncTask; import android.os.Bundle; import android.app.Activity; import android.view.Menu; /** * 創建服務器端 * * */ public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); AsyncTask.execute(new Runnable() { @Override public void run() { startService();//訪問網絡 } }); } /* * 服務器端從客服端 * * */ public void startService(){ Socket socket =null; InputStream inputStream = null; try { ServerSocket serverSocket = new ServerSocket(9999);//填入端口號 socket = serverSocket.accept();//接收客服端的的連接請求 inputStream = socket.getInputStream();//獲取輸入流 /* * 從輸入流中讀取數據 * * */ byte[] bs = new byte[1024]; int i=-1; while((i = inputStream.read(bs))!=-1){ System.out.println(new String(bs,0,i)); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ if(inputStream!=null){ try { inputStream.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if(socket!=null) try { socket.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }
第二步搭建Socket客服端
package com.example.socketclient; import java.io.IOException; import java.io.OutputStream; import java.net.Socket; import java.net.UnknownHostException; import android.os.AsyncTask; import android.os.Bundle; import android.app.Activity; import android.view.Menu; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); AsyncTask.execute(new Runnable() { @Override public void run() { // TODO Auto-generated method stub startClient(); } }); } public void startClient(){ OutputStream out = null; Socket socket = null; try { socket = new Socket("127.0.0.1",9999); out = socket.getOutputStream();//獲取輸出流 out.write("abc".getBytes());//把相當於客服端數據寫到server端 //虛擬機(手機)相當於一個電腦127.0.0.1是訪問手機自己,9999是server開的端口號 } catch (Exception e) { e.printStackTrace(); } finally{ if(out!=null){ try { out.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }//關閉 } if(socket!=null){ try { socket.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } }