一、Socket通信概述
Socket,即套接字,是在網路中使用的一種通信機制,它是計算機之間通信的基石。Socket通信採用客戶端/服務端的模式,客戶端向服務端發出請求,服務端接收請求並返迴響應結果。Socket通信可以用於傳輸任何形式的數據,例如文字、圖片、音頻等。
二、Android中Socket簡介
在Android中,可以使用Java的Socket API進行Socket通信。Android提供了兩種Socket,一種是普通的Socket(TCPSocket)、一種是用於廣播的MulticastSocket(UDP Socket)。Android與服務端的通信可以使用TCP Socket,也可以使用UDP Socket,具體取決於應用場景。
三、實現步驟
下面介紹一下使用Python實現Android Socket通信的具體步驟。
1. 創建伺服器
import socket server_socket = socket.socket() server_socket.bind(('0.0.0.0', 8080)) server_socket.listen(0) while True: client_socket, _ = server_socket.accept() print('新客戶端連接') client_socket.sendall(b'Hello, World!') client_socket.close()
上述代碼實現了創建伺服器並監聽8080埠。由於Python默認編碼格式為utf-8,因此文本信息需要轉換為位元組流類型,使用b將字元串加上前綴變成位元組流類型。
2. 創建Android客戶端
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.Socket; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); new Thread(new Runnable() { @Override public void run() { try { Socket socket = new Socket("192.168.1.10", 8080); BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream())); PrintWriter out = new PrintWriter(socket.getOutputStream(), true); out.println("Hello Server!"); String text = in.readLine(); runOnUiThread(new Runnable() { @Override public void run() { TextView textView = (TextView)findViewById(R.id.text_view); textView.setText(text); } }); socket.close(); } catch (IOException e) { e.printStackTrace(); } } }).start(); } }
上述代碼實現了創建Android客戶端,並向伺服器發送文本信息。在接收到服務端的返回後,將其顯示在TextView中。
四、總結
文章中介紹了Python實現Android Socket通信的步驟,需要注意的是,Android SDK必須在Manifest.xml文件中聲明網路許可權,否則無法進行網路通信。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/236248.html