網路程式設計(一)

2022-05-29 11:18:10 字數 1730 閱讀 7141

#網路檢視器

傳送http請求

url url = new

url(address);

//獲取連線物件,並沒有建立連線

//設定連線和讀取超時

conn.setconnecttimeout(5000);

conn.setreadtimeout(5000);

//設定請求方法,注意必須大寫

conn.setrequestmethod("get");

//建立連線,傳送get請求

//conn.connect();

//建立連線,然後獲取響應嗎,200說明請求成功

conn.getresponsecode();

伺服器的是以流的形式返回給瀏覽器的

//拿到伺服器返回的輸入流

inputstream is = conn.getinputstream();

//把流裡的資料讀取出來,並構造成

bitmap bm = bitmapfactory.decodestream(is);

把設定為imageview的顯示內容

imageview iv = (imageview) findviewbyid(r.id.iv);

iv.setimagebitmap(bm);

新增許可權

###主線程不能被阻塞

###只有主線程能重新整理ui

#####訊息佇列

###加入快取的功能

#獲取開源**的**

#html原始檔檢視器

###亂碼的處理

#提交資料 

###get方式提交資料

###post方式提交資料

設定允許開啟post請求的流

conn.setdooutput(true);

獲取連線物件的輸出流,往流裡寫要提交給伺服器的資料

outputstream os = conn.getoutputstream();

os.write(data.getbytes());

#網路請求
###主線程阻塞

*ui停止重新整理,應用無法響應使用者操作

* 耗時操作不應該在主線程進行

* anr

* 應用無響應異常

* 主線程阻塞時間過長,就會丟擲anr

* 主線程又稱ui執行緒,因為只有在主線程中,才能重新整理ui

###訊息佇列機制

* 主線程建立時,系統會同時建立訊息佇列物件(messagequeue)和訊息輪詢器物件(looper)

* 輪詢器的作用,就是不停的檢測訊息佇列中是否有訊息(message)

* 訊息佇列一旦有訊息,輪詢器會把訊息物件傳給訊息處理器(handler),處理器會呼叫handlemessage方法來處理這條訊息,handlemessage方法執行在主線程中,所以可以重新整理ui

* 總結:只要訊息佇列有訊息,handlemessage方法就會呼叫

* 子執行緒如果需要重新整理ui,只需要往訊息佇列中發一條訊息,觸發handlemessage方法即可

* 子執行緒使用處理器物件的sendmessage方法傳送訊息

網路程式設計(一)

最近在學習網路程式設計,還是寫點筆記來督促下自己,邊寫邊學才不至於懶惰。我其實一直對網路通訊很是好奇,以前也經常想網路遊戲和聊天軟體是如何使使用者互連並進行通訊的呢?後來接觸到套接字,並且還能做些簡單的通訊,但對其中的工作原理渾然不知,凡事總是如此,你不想被某事束縛或牽著鼻子走,就總會想著去了解更深...

網路程式設計(一)

網路通訊三素質 一 ip位址 二 埠號 三 傳輸協議 tcp安全但慢,udp快。socket程式設計 一收一發 在python3裡,無論是收,還是發,必須是 bytes型別。怎麼改?bytes x,utf8 x 是要改的變數,注意後面要加編碼格式 utf8server下的方法 client下的方法 ...

網路程式設計(一)

osi七層模型 開放系統互連參考模型 open system interconnect 是國際標準化組織iso和國際電報 諮詢委員會ccitt聯合制定的開放系統互連參考模型,為開放式互連系統提供了一種功能結構的框架。osi系統分為七層,物理層,資料鏈路層,網路層,傳輸層,會話層,表示層,應用層。tc...