網路程式設計:scoke程式設計(通訊),套接字程式設計
傳送端:
1、建立傳送端socket物件(datagramsocket類)。
2、建立資料報包。(datagrampacket類)
datagrampacket(要傳送的內容-位元組陣列形式,陣列的長度,ip位址,埠號);
怎麼獲取自己的ip位址?
inetaddress.getbyname(主機名或者ip位址);
3、呼叫datagramsocket類的send()方法傳送資料報。
4、關閉傳送端socket物件。
接收端:
1、建立接收端socket物件(datagramsocket類)。
2、建立資料報包接收傳送端傳過來的資料。
public datagrampacket(byte buf, int length)
3、呼叫datagramsocket類的receive()方法接收傳過來的資料。
socket.receive(datagrampacket類的物件);
4、從資料報中獲取資料:
getdata(); 從資料報中獲取資料(位元組資料形式)
getlength(); 獲取有效的資料的位元組長度。
//inetaddress 可以看做是ip位址的包裝類
datagrampacket類的物件.getaddress().gethostaddress(); //返回的是字串型別的ip位址
datagrampacket類的物件.getport(); //獲取埠號(int型別)
5、把接收到的資料轉成字串,並列印(可寫可不寫)
6、關閉接收端socket物件。
tcp協議:
特點:面向有連線(三次握手),資料安全,速度低。區分客戶端和服務端的。
udp協議傳送和接收資料:
普通版(只實現傳送和接收就可以了)。
不斷傳送和接收。(while改進)
傳送端和接收端在乙個視窗。(多執行緒改進版)
小案例:
gui改進版。(不作為重點掌握,有時間了玩兒玩兒就行)
傳送:actionlistener
記錄:把聊天記錄寫入到乙個文字檔案中。(注意:是追加寫入)
//實際開發中,這些資訊都是存在資料庫中的。
清屏:震動:
原理:在兩個(多個座標)進行快速的切換。
如何實現震動的?
判斷傳過來的位元組陣列的首個位元組時候是-1,如果是,就震動,並且停止本次傳送。
如果不是,就正常傳送。
快捷鍵:
新增乙個鍵盤監聽,keylistener
生成jar包:
tcp協議:
需要建立連線(三次握手),速度慢,資料是安全的。
客戶端:
1、建立乙個客戶端socket物件(指定ip和埠號),通過ip位址和連線對應的伺服器。
2、通過socket類的getinputstream()方法和getoutputstream()方法獲取和伺服器端相連的io流。
客戶端輸入流可以讀取 伺服器端輸出流寫出的內容
客戶端輸出流可以寫出 資料 到伺服器端輸入流
伺服器端:
1、建立伺服器端socket物件(指定埠)。
建立serversocket類的物件。
2、監聽連線。
呼叫serversocket類中的accept()方法建立和該客戶端通訊的socket物件。
3、通過socket類的getinputstream()方法和getoutputstream()方法獲取和客戶端端相連的io流。
伺服器端輸入流可以讀取 客戶端端輸出流寫出的內容
伺服器端輸出流可以寫出 資料 到客戶端輸入流
用多執行緒改進伺服器端:
用匿名內部類的方式把伺服器端的 讀寫資料的**給封裝起來就可以了。
39 網路程式設計
http協議,hyper text transfer protocol 超文字傳輸協議 是用於從全球資訊網伺服器傳送超文字到本地瀏覽器的傳輸議,http是乙個應用層協議,由請求和響應構成,是乙個標準的客戶端伺服器模型。c s模式 client和server常常分別處在相距很遠的兩台計算機上,clie...
2018 4 15 網路程式設計
單純的客戶端服務端有個侷限性,a客戶端連線上以後,未處理完之前,b客戶端連線只有等待 所以服務端最好將每個客戶端封裝到乙個執行緒中 class picthread implements runnable public void run outputstream out s.getoutputstre...
013 網路程式設計
ip 位址就是標識網路中裝置的乙個位址,好比現實生活中的家庭位址。ipv4 是目前使用的ip位址 ipv6 是未來使用的ip位址 ipv4 是由點分十進位制組成 ipv6 是由冒號十六進製制組成 ip 位址的作用是標識網路中唯一的一台裝置的,也就是說通過ip位址能夠找到網路中某台裝置。說明 ifco...