Android基於TCP協議的Socket通信完整詳細易懂例子(一)(記錄學習)

最近這段時間因爲公司的業務沒有那麼的緊,所以也會偶爾有一些自己的自由時間去做自己想做的事,最近也一直在琢磨socket 然後就寫了一個詳細易懂的demo分享給大家
在這裏呢 那些tcp,udp的區別和什麼tcp三次握手我這裏就不說了(主要我現在也不太懂)百度一下你就知道
好了 廢話不多 直接開始:
首先來一個流程圖 根據這個圖片就可以清楚知道使用TCP協議進行通信的實現的過程
在這裏插入圖片描述
然後再來一個簡單卻不失詳細的demo
這裏服務端的實現我用的是eclipse進行實現的

public class SocketServiceTcp {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		System.out.println("開始了臭弟弟:");
		  try {
			    //1.創建一個服務器端Socket,即ServerSocket,指定綁定的端口,並監聽此端口
				ServerSocket serverSocket = new ServerSocket(12345);
				Socket socket = null;
				//2.調用accept()等待客戶端連接
				System.out.println("~~~服務端已就緒,等待客戶端接入");
				socket = serverSocket.accept();
				//3.連接後獲取輸入流,讀取客戶端信息
				InputStream is=null;
				InputStreamReader isr=null;
				BufferedReader br=null;
				is = socket.getInputStream();     //獲取輸入流
				isr = new InputStreamReader(is,"UTF-8");
				br = new BufferedReader(isr);
				String info = null;
				while((info=br.readLine())!=null){//循環讀取客戶端的信息
					System.out.println("客戶端發送過來的信息" + info);
				}
				socket.shutdownInput();//關閉輸入流
				socket.close();
           
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}catch (Exception e) {
           e.printStackTrace();
       }
	}

}

Android客戶端的實現

 btna.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        try {
                           
                            Socket socket = new Socket("192.168.30.83",12345);
                            OutputStream os = socket.getOutputStream();
                            os.write("弟弟救我".getBytes());
                            OutputStreamWriter writer = new OutputStreamWriter(os,"UTF-8");
                            writer.flush();
                            socket.shutdownOutput();
                            socket.close();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                }).start();
                }
                });

實現的效果:
在這裏插入圖片描述
這就完成了客戶端往服務器端發送數據

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