Android實現socket簡單通信

1.添加權限

<!--允許應用程序改變網絡狀態-->

<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/> 

<!--允許應用程序改變WIFI連接狀態-->

<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/> 

<!--允許應用程序訪問有關的網絡信息-->

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

<!--允許應用程序訪問WIFI網卡的網絡信息--> 

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>

<!--允許應用程序完全使用網絡-->

<uses-permission android:name="android.permission.INTERNET"/>


2.1 使用TCP協議通信

protected void connectServerWithTCPSocket() { 

Socket socket;  

try {

socket = new Socket("192.168.1.32"1989);  

// 創建一個InputStream用戶讀取要發送的文件。

InputStream inputStream = new FileInputStream("e://a.txt");  

// 獲取Socket的OutputStream對象用於發送數據

OutputStream outputStream = socket.getOutputStream();

// 創建一個byte類型的buffer字節數組,用於存放讀取的本地文件

byte buffer[] = new byte[4 * 1024];

int temp = 0;

// 循環讀取文件

while ((temp = inputStream.read(buffer)) != -1) { 

// 把數據寫入到OuputStream對象中 

outputStream.write(buffer, 0, temp);  

}

// 發送讀取的數據到服務端 

outputStream.flush();  

}catch (UnknownHostException e) { 

e.printStackTrace(); 

}catch (IOException e) { 

 e.printStackTrace();  

}

}

2.2 服務器端簡單實現

 public void ServerReceviedByTcp() {

// 聲明一個ServerSocket對象

ServerSocket serverSocket = null;  

try {

// 創建一個ServerSocket對象,並讓這個Socket在1989端口監聽

serverSocket = new ServerSocket(1989);  

// 調用ServerSocket的accept()方法,接受客戶端所發送的請求,如果客戶端沒有發送數據,那麼該線程就停滯不繼續

Socket socket = serverSocket.accept(); 

// 從Socket當中得到InputStream對象

InputStream inputStream = socket.getInputStream();

byte buffer[] = new byte[1024 * 4];

int temp = 0;

// 從InputStream當中讀取客戶端所發送的數據

while ((temp = inputStream.read(buffer)) != -1) { 

 System.out.println(new String(buffer, 0, temp)); 

}

serverSocket.close();  

}catch (IOException e) { 

 e.printStackTrace();  

}

}




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章