Android 提供的常用的網絡編程包括針對TCP/IP協議的Socket通信。Socket是一種跨平台的編程方式,可以在異構語言之間進行通信。
Socket程序的開發原理,是要實現服務器端和客戶端。
服務器,使用ServerSocket監聽指定的端口,端口可以隨意指定(由於1024以下的端口通常屬於保留端口,在一些操作系統中不可以隨意使用,所以建議使用大於1024的端口),等待客戶連接請求,客戶連接後,會話產生;在完成會話後,關閉連接。
客戶端,使用Socket對網絡上某一個服務器的某一個端口發出連接請求,一旦連接成功,打開會話;會話完成後,關閉Socket。客戶端不需要指定打開的端口,通常臨時的、動態的分配一個1024以上的端口。
更多Android相關信息見Android 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=11
下面是一個實現socket的例子:
服務器端代碼:
- package com.socket;
-
- import java.io.BufferedReader;
- import java.io.InputStream;
- import java.io.InputStreamReader;
- import java.io.OutputStream;
- import java.io.PrintWriter;
- import java.net.ServerSocket;
- import java.net.Socket;
- /**
- * com Server
- */
- public class Main {
- private int ServerPort = 9999;
- private ServerSocket serversocket = null;
- private OutputStream outputStream = null;
- private InputStream inputStream = null;
- private PrintWriter printWinter = null;
- private Socket socket = null;
- private BufferedReader reader = null;
-
- public Main(){
- try{
- serversocket = new ServerSocket(ServerPort);
- System.out.println("服務啟動。。。");
- socket = serversocket.accept();
- System.out.println("客戶已連接");
-
-
- }catch(Exception ex){
- ex.printStackTrace();
- }
- try{
- outputStream= socket.getOutputStream();
- inputStream = socket.getInputStream();
- printWinter = new PrintWriter(outputStream,true);
- reader = new BufferedReader(new InputStreamReader(inputStream));
- BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
- while (true){
- String message = reader.readLine();
- System.out.println("client:"+message);
- if(message.equals("bye")||message.equals("Bye")){
- break;
- }
- message = in.readLine();
- printWinter.println(message);
-
- }
- outputStream.close();
- inputStream.close();
- socket.close();
- serversocket.close();
- System.out.print("Client is disconnected");
-
- }catch(Exception e){
- e.printStackTrace();
- }finally{
-
- }
-
- }
- public static void main(String[] args){
- new Main();
- }