當前位置:首頁 » 安卓系統 » pcandroidsocket

pcandroidsocket

發布時間: 2025-10-12 23:04:29

㈠ 關於Android Socket 新手求教!

1.1什麼是Socket Socket
是一種抽象層,應用程序通過它來發送和接收數據,使用Socket可以將應用程序添加到網路中,與處於同一網路中的其他應用程序進行通信。簡單來說,Socket提供了程序內部與外界通信的埠並為通信雙方的提供了數據傳輸通道。

1.2Socket的分類
根據不同的的底層協議,Socket的實現是多樣化的。本指南中只介紹TCP/IP協議族的內容,在這個協議族當中主要的Socket類型為流套接字(streamsocket)和數據報套接字(datagramsocket)。流套接字將TCP作為其端對端協議,提供了一個可信賴的位元組流服務。數據報套接字使用UDP協議,提供數據打包發送服務。
下面,我們來認識一下這兩種Socket類型的基本實現模型。

二、Socket 基本通信模型

詳細

㈡ 請問下,android能不能直接通過手機IP進行socket通信,不是局域.

可以的,只要通信的IP是通的就行了。
有兩種方案:
1、在PC機上建立伺服器,手機與手機之間的通信通過伺服器進行中轉
2、一部手機作為伺服器,另一部手機作為客戶端接入該手機
一般是第一種方案
1、pc端:
serverSocket=new ServerSocket(5648); //在5648埠進行偵聽
Socket sk = serverSocket.accept();//如果有接入,則創建對應的socket;
2、手機端:
socket=new Socket("tobacco5648.xicp.net",5648);//連接socket
3、消息輸入輸出:
pw=new PrintWriter(socket.getOutputStream()); //消息輸出
pw.println("發送消息");
pw.flush();
br=new BufferedReader(new InputStreamReader(socket.getInputStream())); //消息接收
while((str=br.readLine())!=null){
//接收消息
}

㈢ android socket有幾種方法

/***第一種:客戶端Socket通過構造方法連接伺服器***/
//客戶端Socket可以通過指定IP地址或域名兩種方式來連接伺服器端,實際最終都是通過IP地址來連接伺服器
//新建一個Socket,指定其IP地址及埠號
Socket socket = new Socket("192.168.0.7",80);
/***Socket 客戶端 一些常用設置***/
//客戶端socket在接收數據時,有兩種超時:1.連接伺服器超時,即連接超時;2.連接伺服器成功後,接收伺服器數據超時,即接收超時
//*設置socket 讀取數據流的超時時間
socket.setSoTimeout(5000);
//發送數據包,默認為false,即客戶端發送數據採用Nagle演算法
//但是對於實時交互性高的程序,建議其改為true,即關閉Nagle演算法,客戶端每發送一次數據,無論數據包大小都會將這些數據發送出去
socket.setTcpNoDelay(true);
//設置客戶端socket關閉時,close()方法起作用時延遲1分鍾關閉,如果1分鍾內盡量將未發送的數據包發送出去
socket.setSoLinger(true, 60);
//設置輸出流的發送緩沖區大小,默認是8KB,即8096位元組
socket.setSendBufferSize(8096);
//設置輸入流的接收緩沖區大小,默認是8KB,即8096位元組
socket.setReceiveBufferSize(8096);
//作用:每隔一段時間檢查伺服器是否處於活動狀態,如果伺服器端長時間沒響應,自動關閉客戶端socket
//防止伺服器端無效時,客戶端長時間處於連接狀態
socket.setKeepAlive(true);
/*** Socket客戶端向伺服器端發送數據 ****/
//客戶端向伺服器端發送數據,獲取客戶端向伺服器端輸出流
OutputStream os = socket.getOutputStream();
OutputStreamWriter osw = new OutputStreamWriter(os);
BufferedWriter bw = new BufferedWriter(osw);
//代表可以立即向伺服器端發送單位元組數據
socket.setOOBInline(true);
//數據不經過輸出緩沖區,立即發送
socket.sendUrgentData(65);//"A"
//向伺服器端寫數據,寫入一個緩沖區
//註:此處字元串最後必須包含「\r\n\r\n」,告訴伺服器HTTP頭已經結束,可以處理數據,否則會造成下面的讀取數據出現阻塞
//在write()方法中可以定義規則,與後台匹配來識別相應的功能,例如登錄Login()方法,可以寫為write("Login|test,123 \r\n\r\n"),供後台識別;
bw.write("Login|test,123 \r\n\r\n");
//發送緩沖區中數據,必須有
bw.flush();

/*** Socket客戶端讀取伺服器端響應數據 ****/
//socket.isConnected代表是否連接成功過
if((socket.isConnected() == true) && (socket.isClosed() == false)){//判斷Socket是否處於連接狀態
//客戶端接收伺服器端的響應,讀取伺服器端向客戶端的輸入流
InputStream is = socket.getInputStream();
//緩沖區
byte[] buffer = new byte[is.available()];
//讀取緩沖區
is.read(buffer);
//轉換為字元串
String responseInfo = new String(buffer);
//日誌中輸出
Log.i("TEST", responseInfo);
} //關閉網路
socket.close();
/***第二種:通過connect方法連接伺服器***/
Socket socket_other = new Socket();
//使用默認的連接超時
socket_other.connect(new InetSocketAddress("192.168.0.7",80));
//連接超時2s
socket_other.connect(new InetSocketAddress("192.168.0.7",80),2000);
//關閉socket
socket_other.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

㈣ android socket接收事件為什麼沒有監聽事件,要用死循環呢

  1. socket是Java API(編程文檔介面),為了直接使用Socekt服務,谷歌直接把Java的Socket模塊照搬過來的

Android 的 onClikcListener onTouchEvent 等是Android API(編程文檔介面)

2.設計目的

編程介面全都是根據需求設定的,比如Google事先考慮開發者有使用監聽事件的需求,才預定義了onClickListener onItemListener這些介面,並且將這些底層實現,封裝到了c和C++層,開發者只需要直接使用Google事先為我們准備好的介面即可。

Socket ,首先Socket並不是Google事先設計好的,Socke中文名稱作套接字,你網路搜套接字編程,可以認識到Socket開發是專門的編程技術,而Socket本身又是網路通信協議的基礎設施,Socket的誕生歷史,高於Android,甚至高於Java,Socekt是計算機提供進程通信能力的編程介面,確切的說,它甚至可以提供不同主機間不同進程的通信能力,(包括同一主機里不同進程的通信能力)

主機?端系統?網路協議?運輸層?傳輸層?套接字?埠?

我說的這些專業名詞,也許你一時半會並不能理解

值得慶幸的是,當你了解到這里,你起碼能想明白,為什麼有的人說,Android 程序,也可以做伺服器了,因為Socket 提供了其他端系統訪問Android程序的能力,能被請求訪問的程序,可以稱作服務端。

想深入了解Socket的設計原理、設計本意,需要深厚的計算機網路知識,在這里我建議你閱讀《計算機網路-自頂向下方法》閱讀前三章,也許你對網路編程會有更深的理解。

總結來說:

Android的Listener系列監聽事件,其實只是響應用戶I/O操作而已,是人與硬體設備的通信,安卓系統提供維持監聽事件的能力,所以你能根據某些事件作出響應

Socket的功能,是提供進程通信的能力,安卓系統並不能直接控制Socket的生命周期,它第一層設計是Java代碼,並不是Google自己研發的,第二層、第三層已經直接深入到運輸層協議、計算機系統層原理了,Google為了省事,直接照搬Java API ,無可厚非。

熱點內容
python一個實例 發布:2025-10-13 02:22:24 瀏覽:432
我的世界秀方塊的伺服器 發布:2025-10-13 02:20:12 瀏覽:746
魔獸10開的什麼配置 發布:2025-10-13 02:14:15 瀏覽:292
apache修改訪問路徑 發布:2025-10-13 01:59:15 瀏覽:724
VS編譯器官網地址 發布:2025-10-13 01:59:13 瀏覽:527
pythonnetwork 發布:2025-10-13 01:46:05 瀏覽:483
加密線路2 發布:2025-10-13 01:40:57 瀏覽:66
手機相冊緩存的圖片 發布:2025-10-13 01:38:33 瀏覽:510
阿里雲伺服器白名單 發布:2025-10-13 01:23:33 瀏覽:844
psftp上傳 發布:2025-10-13 01:18:00 瀏覽:247