日韩欧美国产精品免费一二-日韩欧美国产精品亚洲二区-日韩欧美国产精品专区-日韩欧美国产另-日韩欧美国产免费看-日韩欧美国产免费看清风阁

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開(kāi)發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

Android 開(kāi)發(fā)即時(shí)聊天工具 YQ :(一) Socket 初步

admin
2013年2月25日 14:14 本文熱度 4936

這段時(shí)間在學(xué)習(xí)Android網(wǎng)絡(luò)編程,習(xí)慣一邊寫(xiě)個(gè)簡(jiǎn)單的項(xiàng)目一邊學(xué)習(xí),所以就有了這個(gè)簡(jiǎn)易的簡(jiǎn)易的,,,項(xiàng)目,類似于手機(jī)QQ等等的即時(shí)聊天工具,當(dāng)然功能及其簡(jiǎn)單,跟那些沒(méi)法比,只是學(xué)習(xí),實(shí)現(xiàn)簡(jiǎn)單功能就OK,聽(tīng)說(shuō)QQ是有自己的協(xié)議的,貌似挺復(fù)雜,,,只為學(xué)習(xí)交流之用,而且本人也是Android小菜鳥(niǎo)一枚,錯(cuò)誤不足在所難免,請(qǐng)大家多多指正,3Q~

先看看socket通信基礎(chǔ):

所謂socket通常也稱作"套接字",用于描述IP地址和端口,是一個(gè)通信鏈的句柄。應(yīng)用程序通常通過(guò)"套接字"向網(wǎng)絡(luò)發(fā)出請(qǐng)求或者應(yīng)答網(wǎng)絡(luò)請(qǐng)求。 

Socket和ServerSocket類庫(kù)位于java.net包中。ServerSocket用于服務(wù)器端,Socket是建立網(wǎng)絡(luò)連接時(shí)使用的。在連接成功時(shí),應(yīng)用程序兩端都會(huì)產(chǎn)生一個(gè)Socket實(shí)例,操作這個(gè)實(shí)例,完成所需的會(huì)話。

服務(wù)器:

使用ServerSocket監(jiān)聽(tīng)指定的端口,等待客戶連接請(qǐng)求,客戶連接后,會(huì)話產(chǎn)生;在完成會(huì)話后,關(guān)閉連接。 

客戶端:

使用Socket對(duì)網(wǎng)絡(luò)上某一個(gè)服務(wù)器的某一個(gè)端口發(fā)出連接請(qǐng)求,一旦連接成功,打開(kāi)會(huì)話;會(huì)話完成后,關(guān)閉Socket。

0~1023的端口號(hào)為系統(tǒng)所保留,例如http服務(wù)的端口號(hào)為80,telnet服務(wù)的端口號(hào)為21,ftp服務(wù)的端口號(hào)為23, 所以我們?cè)谶x擇端口號(hào)時(shí),最好選擇一個(gè)大于1023的數(shù)以防止發(fā)生沖突。

簡(jiǎn)單的Client/Server示例:

服務(wù)器:

[java]
  1. public class Client {
  2.     public static void main(String[] args) throws Exception {  
  3.         //向本機(jī)的5469端口發(fā)出客戶請(qǐng)求   
  4.         Socket socket=new Socket(InetAddress.getLocalHost(),5469);  
  5.         //由Socket對(duì)象得到輸入流,并構(gòu)造相應(yīng)的BufferedReader對(duì)象   
  6.         BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream()));  
  7.         //由Socket對(duì)象得到輸出流,并構(gòu)造PrintWriter對(duì)象   
  8.         PrintWriter os=new PrintWriter(socket.getOutputStream());  
  9.         //由系統(tǒng)標(biāo)準(zhǔn)輸入設(shè)備構(gòu)造BufferedReader對(duì)象   
  10.         BufferedReader sin=new BufferedReader(new InputStreamReader(System.in));  
  11.         while(true){  
  12.             String str=sin.readLine();//從系統(tǒng)標(biāo)準(zhǔn)輸入讀入一字符串   
  13.             os.println(str);  
  14.             os.flush(); //刷新輸出流,使Server馬上收到該字符串   
  15.               
  16.             String s=is.readLine();  
  17.             System.out.println("Server : "+s);//在標(biāo)準(zhǔn)輸出上打印從Server讀入的字符串   
  18.             if(str.equals("end")){  
  19.                 break;  
  20.             }  
  21.         }  
  22.         is.close();//關(guān)閉Socket輸入流   
  23.         os.close();//關(guān)閉Socket輸出流   
  24.         socket.close();//關(guān)閉Socket   
  25.     }  
  26. }  

客戶端:

[java]
  1. public class MyServer {
  2.     public static void main(String[] args) throws Exception{  
  3.         ServerSocket server=new ServerSocket(5469);//創(chuàng)建一個(gè)ServerSocket在端口5469監(jiān)聽(tīng)客戶請(qǐng)求   
  4.         Socket client=server.accept();//使用accept()阻塞等待客戶請(qǐng)求   
  5.         BufferedReader is=new BufferedReader(new InputStreamReader(client.getInputStream()));  
  6.         PrintWriter os=new PrintWriter(client.getOutputStream());  
  7.         BufferedReader sin=new BufferedReader(new InputStreamReader(System.in));  
  8.         while(true){  
  9.             String str=is.readLine();  
  10.             System.out.println("Client : "+str);//在標(biāo)準(zhǔn)輸出上打印從Client讀入的字符串   
  11.               
  12.             os.println(sin.readLine());  
  13.             os.flush();//刷新輸出流,使Client馬上收到該字符串   
  14.             if(str.equals("end")){  
  15.                 break;  
  16.             }  
  17.         }  
  18.         is.close();  
  19.         os.close();  
  20.         client.close();  
  21.         server.close();  
  22.     }  
  23. }  

回話示例圖:


上邊的代碼只是實(shí)現(xiàn)一個(gè)客戶端訪問(wèn)服務(wù)器,如果要多個(gè)客戶同時(shí)訪問(wèn)一個(gè)服務(wù)器,那么服務(wù)端的代碼就要修改了:

[java]
  1. public class MyServer extends Thread{  
  2.     Socket client;  
  3.     public MyServer(Socket c){  
  4.         this.client=c;  
  5.     }  
  6.     public void run() {  
  7.         try{  
  8.             BufferedReader is=new BufferedReader(new InputStreamReader(client.getInputStream()));  
  9.             PrintWriter os=new PrintWriter(client.getOutputStream());  
  10.             BufferedReader sin=new BufferedReader(new InputStreamReader(System.in));  
  11.             while(true){  
  12.                 String s=is.readLine();  
  13.                 System.out.println("Client : "+s);//在標(biāo)準(zhǔn)輸出上打印從Client讀入的字符串   
  14.                   
  15.                 String str=sin.readLine();//從系統(tǒng)標(biāo)準(zhǔn)輸入讀入一字符串   
  16.                 os.println(str);  
  17.                 os.flush();//刷新輸出流,使Client馬上收到該字符串   
  18.                 if(str.equals("end")){  
  19.                     break;  
  20.                 }  
  21.             }  
  22.             is.close();  
  23.             os.close();  
  24.             client.close();  
  25.         }catch(Exception e){  
  26.             e.printStackTrace();  
  27.         }  
  28.     }  
  29.   
  30.     public static void main(String[] args) throws Exception{  
  31.         ServerSocket server=new ServerSocket(5469);//創(chuàng)建一個(gè)ServerSocket在端口5469監(jiān)聽(tīng)客戶請(qǐng)求   
  32.         while(true){  
  33.             MyServer s=new MyServer(server.accept());//使用accept()阻塞等待客戶請(qǐng)求   
  34.             s.start();  
  35.         }  
  36.     }  
  37. }  

該文章在 2013/2/25 14:15:02 編輯過(guò)
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開(kāi)發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 亚洲成a人a∨久在线观看 | 国产免费毛不卡片 | 伊人天堂网 | 性午夜视频在线观看 | 两性色午夜视频在线观看 | 亚洲综合激情 | 亚洲精品中文字幕乱码无线 | 片午夜在线观看 | 一区二区三区国产精品午夜福利 | 欧美日本一区二 | 在线观看日韩欧美 | 亚洲精品∧v在线观看 | 99精品国产高清一区二区 | 欧美aaaaa在线 | 一区二区三区日本在线视频免费 | 日本不卡一区二区三区视频 | 亚洲天堂日韩中文 | 免费福利影视 | 欧美黑大硬粗xxxxx成人视颎 | 亚洲国产成 | 日本黄页网站在线观看 | 99青草青草久热精品视频 | 国产精品免费入口视频 | 搡老熟女老 | 成人免费动作大片黄在线 | 欧美国产精品va在线观看 | 欧美αv | 日韩免费在线观看性生活视频 | 娇小videodes极 | 老女人擦| 国产精品三级国语在线看 | 日韩一二三区免费视频 | 精品国产主播在线亚洲 | 2025国产手机在线精品 | 秋秋影视午夜福利高清 | 午夜福利视 | 国产欧美一区二区精品性色 | 亚洲中文字幕精品第三区 | 欧美日韩亚洲视频精品 | 国产亚洲精品ae86 | 国产日韩在线观看一区二区三区 |