文章目錄
- 解決點
- 更好的解決點:
- 終極解決點:後面我有測試下,發現筆記本串連有線,手機串連wifi,也能通訊的。因此現在總結下。
糾結ing
學習是一件需要身體力行的事情,有些東西你理念看的多麼嫻熟,到自己親自上手,不經意間就出現幾個你無法逃避的錯誤,這時候,教科書上沒告訴你這種錯誤的解決方案,只能自己不斷嘗試,不斷失敗,到最後發現其實解決的方法很簡單,但你花費了很長時間,這時你是不是覺得很不值。其實那是值得的,這種經曆是你看再多書也無法學到的能力。
現在說說我的那個坎吧,最近想做個安卓通訊那塊的,代碼很簡單,但pc上開兩個java Application是能通訊的,但在pc開伺服器,安卓手機上裝個用戶端,卻在串連的時候閃退,不知道你有咩有碰到在安卓通訊編程這方面的問題呢。當時我就糾結了,不斷網上找,什麼Google百度都拿出來,閱遍千頁搜尋結果,都是相同的,差不多都是下面那幾句:
//服務端
//建立一個ServerSocket,用於監聽用戶端Socket的串連請求
ServerSocket ss = new ServerSocket(30000);
//採用迴圈不斷接受來自用戶端的請求
while (true){
//每當接受到用戶端Socket的請求,伺服器端也對應產生一個Socket
Socket s = ss.accept();
//下面就可以使用Socket進行通訊了
...
}
//用戶端
//建立串連到伺服器、30000連接埠的Socket
Socket s = new Socket("192.168.2.214" , 30000);
//下面就可以使用Socket進行通訊了
...
然後加些其他東西,不如介面啊,儲存啊。。當時我就隱隱懷疑好像是伺服器ip的問題,但是網上例子的ip都是直接寫的,我就想,難道自己測試的時候的Ip也能固定?當然ip變化,程式員能直接在源碼上改的。然後我就沒頭緒就找資料-》嘗試改代碼-》運行(安卓運行還特慢)-》運行出錯繼續找資料。tupo
突破口
最後快被逼瘋了的我,已經在假設是不是校內網不可以進行網路編程了,如果是固定ip就沒這個問題了。然後我就轉了研究方向,從尋找錯誤點到驗證上面那個理論,驗證的方法很簡單,網上找個已經發布的pc做用戶端安卓做應用端的程式,由於是已經發布的,那被證明程式是正確的,如果程式正確我還是不能串連成功的話,那就是校內網的問題了,在此說明下,我的pc和手機都是串連的T_Link路由器也就是wifi,該路由器連到校園網。順便說下被我找到做小白鼠的是一個一個叫無線滑鼠的東西。
解決方案
本來想證明上面那個理論是正確的,最後被我解決了原先的問題,事事多變啊,現在整理下,給和我一樣碰到相同問題的人,當然我也做個記錄,記錄我摔倒的一個坑,用了我整整兩天啊!
下面介紹利用安卓進行網路編程的環境配置。
一.連在相同wifi上解決點
最好有個wifi點可以都串連,如果沒有,那隻好自己買個了,想學技術,這點必要的錢還是要捨得的。
手機:
pc:
更好的解決點:
經本人測試,只要有個筆記本就行,就算沒網都行,只要你不上網,因為手機只需和pc機通訊即可。具體方法就是網上下個wif共用精靈之類的程式,讓筆記本架設wifi,手機連到筆記本即可,當然不用wifi共用精靈之類的程式直接命令列輸入也可,只是麻煩點,反正我是懶得記那些命令列代碼。
pc:
手機:
終極解決點:後面我有測試下,發現筆記本串連有線,手機串連wifi,也能通訊的。因此現在總結下。
1. pc 連有線 手機連 wifi
2.pc 連wifi 手機連wifi
3. pc開啟wifi共用 手機連pc
ps:下面是我的一些設想,一般時候用不到,但可能性很大,看客可自行嘗試。
4. 手機開啟wifi共用 pc連手機
5.藍芽串連
二.pc機需要關閉防火牆
解決點:這個必須啦,我建議是,測試的時候開啟,平常瀏覽網頁,看看島國愛情動作大片的時候就把他關上了。
進控制台-》windows防火牆-》開啟關閉windows防火牆,進去都關了好了
三.填寫正確ip
解決點:開始功能表列搜尋方塊輸入cmd-》跳轉命令列控制介面-》輸入ipconfig,按斷行符號,查看ip配置
此時會跳出一大坨東西,由於筆記本有多塊網卡,所有裡面會有很多ip的,不要管後面,開頭一撮就是你的pc ip了,就是下面ipv4地址
後記
那個希望我在我喜歡的事情上能越走越遠把。
2013.6.3補充
清單目錄裡面存在
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
也會出現閃退現象,這裡解釋下閃退,就是點擊進入程式,程式之間強制退出,如果你沒碰到,那恭喜你啊,這不是什麼好的體驗。下面回到正題,研究了原因,發現問題出在android:targetSdkVersion="17"上,將其刪除即可。