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();
}
}