Socket Android手機用戶端與PC服務端區域網路內聯測試

來源:互聯網
上載者:User

標籤:android   style   blog   http   color   io   os   ar   使用   

Socket Android手機用戶端與PC服務端區域網路內聯測試,筆者採用的是 PC伺服器,Android平板用戶端 ,PC模擬器用戶端,

前段時間為了加深對Socket通訊的印象和知識的深度掌握,我模仿了QQ的一些元素,也借鑒了其他牛人的一些源碼思想,寫了

一個 叫 IQ 的 Android 聊天軟體,該軟體大致由 Android用戶端、JAVA pc服務端、mysql資料庫組成,用戶端和服務端都

比較多的用到了讀寫的IO流,SCOKET,線程等,這篇部落客要給大家介紹測試環境,不講源碼實現方式,也就是怎麼使用寫好

的程式來應用和測試,我看過很多部落格,在這方面說的很笼統,這樣很不利於初學者的學習,所以我今天會很詳細的講一遍,

有興趣學習Socket的可以跟著一起來,不說廢話了,看部落格吧 


首先我們要只知道,在一個區域網路內的IP是可以互相訪問的,也就是同一個網段內,這樣說可能很難理解,我上一些核心代碼

結合代碼示範給大家看:

public class IQserver {public IQserver(){ServerSocket Ssocket = null;try { Ssocket=new ServerSocket(4632);System.out.println("Server is Loging...... "+new Date());while(true){//accept()是一個阻塞函數,所謂阻塞性方法//就是說該方法被調用後將等待客戶的請求,直到有一個客戶啟動並請求串連到相同的連接埠,//然後accept()返回一個對應於客戶的SocketSocket socket = Ssocket.accept();

上面代碼是 PC 服務端的名為 IQServer 類程式碼片段,ServerSocket 建立對象  Ssocket=new ServerSocket(4632);設定監

聽連接埠,監聽來自此連接埠的 SOCKET 

public class IQClient { private Context context;public Socket socket;public IQClient(Context context){this.context=context; }    // 登入public boolean sendLoginInfo(Object obj){ boolean b=false; try {socket=new Socket();   try{//host:為伺服器的IP地址   port:為伺服器的連接埠號碼    3000ms為串連延遲設定socket.connect(new InetSocketAddress("10.0.0.2",4632),3000);}catch(SocketTimeoutException e){//串連伺服器逾時 return false;

上面程式碼片段是 用戶端 IQClient 的程式碼片段,我們可以看到我目前的測試IP是 10.0.0.2,連接埠4632,延遲3秒,這個測試是


是單一的 PC Android模擬器訪問 本地PC 的IP ,它等於 127.0.0.1,下面開始說重點,我們測試就應該把伺服器和客服

端控制在同一網段下,比如:


路由器映射:我們都知道,當我們的裝置連線路由器分享的熱點,都會被自動分配一個IP,打個比方路由器的是

192.168.23.1,我用手機連上了路由器的熱點,分配到了一個IP:192.168.23.0~255 第四個欄位為不為1的0~255之間的

數字,因為IP地址不能衝突,還有就是連接埠4632不要與伺服器的任何連接埠衝突,連接埠盡量設定不為常見的,具體連接埠查看

cmd命令:x:> netstat -ano

本機伺服器自行設定:如果沒有伺服器呢,其實我們可以自己弄個區域網路,玩過CS的都知道,嘿嘿,通常效能比較好的筆記

本會分出一個熱點,PC的話插上wifi 也可以分享熱點,然後其他玩家只要串連上這個熱點就可以同時一起玩了,下面說說

筆記本分享熱點的命令列,有工具的可以直接分享,不用敲命令,省事兒

筆記本熱點分享CMD 命令:

x:> netsh wlan set hostednetwork mode=allow ssid=熱點帳號 key=密鑰

敲完斷行符號,不用加;號

接著在敲:

x:> netsh wlan start hostednetwork 

不加;號,直接斷行符號,如果出現一些異常,或失敗提示

請檢查服務管理,按住田字格鍵(菜單鍵)+R鍵 在運行裡輸入services.msc

找到WLAN這一項,開啟,其他錯誤,請找到WLAN防火牆設定,設定完,重啟PC


接下來就是利用分享出來的熱點,進行區域網路測試,以Win7 PC 為案例


比如我現在用我的 win7筆記本分享了一個名為 Fuck 的熱點,它的IP是:192.168.23.1

具體連接埠查看方法如下(沒網的情況下):

按住田字格鍵(菜單鍵)+R鍵 在運行裡輸入cmd ,執行 ipconfig 不加;號,斷行符號,如 紅框 就是PC伺服器熱點IP了


抹掉的是沒有影響,因為這是我測試的,而且並沒有分享熱點,以你自己的為準,只是示範給大家看的

然後就在上面的用戶端 IQClient 的程式碼片段,把IP替換成 192.168.23.1 就OK了,連接埠不用修改,然後執行開啟伺服器代碼類,

伺服器開啟代碼及結果圖:

package engineer.jsp.server.Start;/** * @author Engineer-Jsp * @date 2014.08.18 * IQ 啟動服務類*/import engineer.jsp.server.Control.IQserver;public class StartServerSocket {public static void main(String[] args) {new IQserver();}}  /**  *執行IQ測試,請先執行當前類,如果有需要更新和修改代碼,首先要結束進程,重新整理項目,多次運行當前啟動類會拋下面異常 *java.net.BindException: Address already in use: JVM_Bind *因為它還在PC線程中執行,結束進程的CMD命令:① netstat -ano ② 找到線程所在pid ,CMD命令:taskkill  /pid xxxx /f 即可 *然後單機選中項目右鍵重新整理,在運行當前類,還需要注意server與client的連接埠要一致 */

白色標記部分為伺服器開啟之後綁定連接埠的進程:



接下來你要做的就是把寫好的 用戶端APP 分別安裝在手持功能上,然後連上名為Fuck的熱點,登陸測試帳號,測試帳號來自你的mysql資料

庫,我的測試帳號表如下:



PC 模擬器好友名單:




Android 平板用戶端,PC模擬器用戶端,PC java伺服器 ,開始測試:

裝置比較爛。。。大夥不要笑啊。。。o(∩_∩)o ,很久以前買的本子了,平板也是



聊天圖,中 賬戶小情緒 可以收到來自 Engineer-Jsp的訊息,而Engineer-Jsp收不到小情緒的資訊,是因為還有個BUG沒解決呢,因

主要目的是進行區域網路測試,所以這個目前來說不重要,影響不是很大



區域網路的測試就到此說完了,有疑問可以留言,大家一起交流和討論,看到第一時間回複,因為平時比較忙


下面說說網域網的應用,我們都知道每次的IP都不是固定的,這就需要網域名稱跟IP進行綁定,然後通過DNS來解析網域名稱得到IP,或者用伺服器

固定靜態IP也可以,那就會涉及到存取權限和安全問題,一般的資料庫有類似於紅白名單這樣的限制,使我們無法擷取賬戶資訊,也就是賬

戶無法登入,那就需要對資料庫就行IP白名單設定,把許可權符host設定為%號即可解決,然後在伺服器上,用jvm來啟動我們的服務端,用

java命令進行啟動,很多部落格有類似的講解,大家可以多查查資料,瞭解一下


也不知道我講得詳不詳細,反正不懂得就提出來,大家一起討論


源碼,附帶資料庫:http://download.csdn.net/detail/jspping/8067509


Socket Android手機用戶端與PC服務端區域網路內聯測試

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.