當前位置:編程學習大全網 - 源碼下載 - android socket有幾種方法

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

}

  • 上一篇:JAVA開發哪些工具需
  • 下一篇:如何在openwrt中安裝wifidog
  • copyright 2024編程學習大全網