国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Java基礎之網絡編程

2019-11-14 21:16:50
字體:
來源:轉載
供稿:網友
java基礎之網絡編程ip地址

IP地址是由32位或者128位無符號數表示的網絡層通信地址,是一種低級協議,TCP和UDP協議都是在它的基礎上構建的。Java中使用InetAddress來表示IP地址,它有兩個子類Inet4Address和Inet6Address,分別表示IPV4和IPV6。

getByName()方法通過主機名獲取到InetAddress對象,若有多個主機,則使用getAllByName()返回InetAddress對象數組。

Socket套接字

Socket是提供網絡服務的一種機制,通信的兩端都有socket,兩端通過socket進行通信。InetSocketAddress封裝了IP+端口號。

TCP/UDP協議的特點UDP協議

UDP協議將數據封裝成數據報,大小在64KB以內,無須建立連接,速度快,不可靠。Java使用DatagramSocket類描述用來發送和接收數據包的socket,而使用DatagramPacket來描述UDP協議的數據包,用于描述無連接包投遞服務。

數據發送

  • 建立UDPsocket服務,指定發送端口: DatagramSocket ds=new DatagramSocket(localport);
  • 將字節數據封裝在數據包中:DatagramPacket dp=new DatagramPacket(buf,buf.length,ia,receiveport)
  • 通過socket發送功能發送: ds.send(dp)
  • 關閉資源:ds.close()

數據接收

  1. 建立UDPsocket服務,指定監聽端口:DatagramSocket ds=new DatagramSocket(receiveport);
  2. 定義數據包用來接收數據:DatagramPacket dp=new DatagramPacket(buf,buf.length)
  3. 通過socket接收功能接收數據并提取:ds.receive(dp);dp.getData();
  4. 關閉資源:ds.close()
TCP協議

TCP協議需要建立連接,在連接中傳輸大量數據(不需封裝成數據報),通過三次握手完成連接,是可靠協議,但效率低。Java使用Socket來描述客戶端的socket服務,使用SocketSever來描述服務器端的socket服務。

客戶端

  1. 創建客戶端并指定要連接的服務器的IP和端口:Socket cs=new Socket(InetAdress,serverport)
  2. 通過socket對象中的輸入流和輸出流分別發送和接收數據:
  3. 獲取到輸出流OutputStream os=cs.getOutputStream();
  4. 將數據寫入到輸出流中:os.write(byte[]);
  5. 獲取到輸入流:InputStream is=cs.getInputstream()

服務器端

  1. 創建服務端的ServerSocket服務,并監聽一個端口:SeverSocket ss=new ServerSocket(serverport)
  2. 獲取連接過來的客戶端對象:Socket s=ss.accept();該方法是阻塞式方法。
  3. 使用客戶端對象的讀取流來讀取發送過來的數據:
  4. 獲取到輸入流InputStream is=s.getInputstream()
  5. 將數據讀取到字節數組中Is.read(buf)
  6. 獲取到輸出流:OutputStream os=s.getOutputStream();
  7. 通信完畢關閉客戶端s.close()

ServerSocket對象初始化時,可以通過設置backlog參數來指定能最大連接到服務器的客戶端個數

URL類

URL是統一資源定位符,該類可以根據指定形式構建URL對象。

  • getHost()獲取主機名
  • getFile()獲取文件名
  • getPath()獲取路徑部分
  • getPort()獲取端口號,當URL中沒有指定時返回-1;
  • getPRotocal()獲取協議名
  • getQuery()獲取請求部分
  • openConnection()返回一個URL的連接對象
  • openStream()打開一個URL連接并返回一個用于從該連接讀入的InputStream

URLConnection類

該類是抽象類,有兩個子類HttpURLConnection和JarURLConnection來實現。該類封裝了傳輸層的socket對象,可以直接讀取socket流對象

  • getInputStream()返回socket的讀取流對象,用于數據的讀取從該連接返回的數據。
  • getContent()獲取到URL連接的內容

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 卢氏县| 朝阳县| 鲁山县| 黎平县| 大洼县| 闸北区| 安龙县| 湛江市| 垫江县| 佛教| 砀山县| 嘉鱼县| 太和县| 定陶县| 和平县| 蒙阴县| 盈江县| 同仁县| 乌鲁木齐市| 杭锦后旗| 长沙市| 庆云县| 东光县| 澄城县| 海淀区| 龙川县| 阿合奇县| 从化市| 大悟县| 德钦县| 阜康市| 当阳市| 巴彦淖尔市| 郯城县| 南安市| 宁德市| 鞍山市| 观塘区| 通榆县| 伊吾县| 长海县|