1. 如何實現java解析網路協議報文(類似Wireshark那樣,或者有沒有開源的包供調用)
從http://netresearch.ics.uci.e/kfujii/Jpcap/doc/index.html 找到JPcap。JPcap 是一個能夠捕獲、發送網路數據包的Java 類庫包。這個包用到了LibPcap 和原始套接字API。
2. java寫網路抓包問題!!!
把jpcap.dll放到jre/bin目錄下
3. 誰能給一個java.net包的介紹,謝謝!
軟體包 java.net 的描述
為實現網路應用程序提供類。
java.net 包可以大致分為兩個部分:
低級 API,用於處理以下抽象:
地址,也就是網路標識符,如 IP 地址。
套接字,也就是基本雙向數據通信機制。
介面,用於描述網路介面。
高級 API,用於處理以下抽象:
URI,表示統一資源標識符。
URL,表示統一資源定位符。
連接,表示到 URL 所指向資源的連接。
地址
在整個 java.net API 中,地址或者用作主機標識符或者用作套接字端點標識符。
InetAddress 類是表示 IP(Internet 協議)地址的抽象。它擁有兩個子類:
用於 IPv4 地址的 Inet4Address。
用於 IPv6 地址的 Inet6Address。
但是,在大多數情況下,不必直接處理子類,因為 InetAddress 抽象應該覆蓋大多數必需的功能。
關於 IPv6
並非所有系統都支持 IPv6 協議,而當 Java 網路連接堆棧嘗試檢測它並在可用時透明地使用它時,還可以利用系統屬性禁用它。在 IPv6 不可用或被顯式禁用的情況下,Inet6Address 對大多數網路連接操作都不再是有效參數。雖然可以保證在查找主機名時 java.net.InetAddress.getByName 之類的方法不返回 Inet6Address,但仍然可能通過傳遞字面值來創建此類對象。在此情況下,大多數方法在使用 Inet6Address 調用時都將拋出異常。
套接字
套接字是在網路上建立機器之間的通信鏈接的方法。java.net 包提供 4 種套接字:
Socket 是 TCP 客戶端 API,通常用於連接遠程主機。
ServerSocket 是 TCP 伺服器 API,通常接受源於客戶端套接字的連接。
DatagramSocket 是 UDP 端點 API,用於發送和接收數據包
MulticastSocket 是 DatagramSocket 的子類,在處理多播組時使用。
使用 TCP 套接字的發送和接收操作需要藉助 InputStream 和 OutputStream 來完成,這兩者是通過 Socket.getInputStream() 和 Socket.getOutputStream() 方法獲取的。
介面
NetworkInterface 類提供 API 以瀏覽和查詢本地機器的所有網路介面(例如,乙太網連接或 PPP 端點)。只有通過該類才可以檢查是否將所有本地介面都配置為支持 IPv6。
高級 API
java.net 包中的許多類可以提供更加高級的抽象,允許方便地訪問網路上的資源。這些類為:
URI 是表示在 RFC 2396 中指定的統一資料標識符的類。顧名思義,它只是一個標識符,不直接提供訪問資源的方法。
URL 是表示統一資源定位符的類,它既是 URI 的舊式概念又是訪問資源的方法。
URLConnection 是根據 URL 創建的,是用於訪問 URL 所指向資源的通信鏈接。此抽象類將大多數工作委託給底層協議處理程序,如 http 或 ftp。
HttpURLConnection 是 URLConnection 的子類,提供一些特定於 HTTP 協議的附加功能。
建議的用法是使用 URI 指定資源,然後在訪問資源時將其轉換為 URL。從該 URL 可以獲取 URLConnection 以進行良好控制,也可以直接獲取 InputStream。
下面是一個示例:
URI uri = new URI("http://java.sun.com/");
URL url = uri.toURL();
InputStream in = url.openStream();
協議處理程序
如上所述,URL 和 URLConnection 都依賴於協議處理程序,所以協議處理程序必須存在;否則將拋出異常。此為與 URI 的主要不同點,URI 僅標識資源,所以不必訪問協議處理程序。因此,盡管可能利用任何種類的協議方案(例如,myproto://myhost.mydomain/resource/)創建 URI,但類似的 URL 仍將試圖實例化指定協議的處理程序;如果指定協議的處理程序不存在,則拋出異常。
默認情況下,協議處理程序從默認位置動態載入。但是,通過設置 java.protocol.handler.pkgs 系統屬性也可能增加搜索路徑。例如,如果將其設置為 myapp.protocols,則 URL 代碼將首先嘗試(對於 http 而言)載入 myapp.protocols.http.Handler,然後,如果失敗,則嘗試從默認位置載入 http.Handler。
注意,處理程序類必須為抽象類 URLStreamHandler 的子類。
4. Java網路編程需要導入()包中的類與介面
咨詢記錄 · 回答於2021-12-26
5. Java編程 --熟悉基於http,socket協議的網路編程都要學那些包呀希望回答具體些!
java裡面的socket編程,首先要建立socket的客戶端和伺服器端,對應的是java.net包;java網路編程肯定會用到多線程和流,對應的是java.lang和java.io包
呵呵,拋磚引玉了!
6. java網路抓ip包 首部是個什麼情況
首先要去下載jpcap並在IDE上做配置,具體操作方式參考以下鏈接
網頁鏈接
代碼:
importjava.io.IOException;
importjpcap.*;
importjpcap.packet.IPPacket;
importjpcap.packet.Packet;
publicclassTest{
publicstaticvoidmain(String[]args){
/*-------------- 第一步綁定網路設備--------------*/
NetworkInterface[]devices=JpcapCaptor.getDeviceList();
for(NetworkInterfacen:devices){
System.out.println(n.name+"|"+n.description);
}
System.out.println("-------------------------------------------");
JpcapCaptorjpcap=null;
intcaplen=1512;
booleanpromiscCheck=true;
try{
jpcap=JpcapCaptor.openDevice(devices[1],caplen,promiscCheck,50);
//0或1
}catch(IOExceptione){
e.printStackTrace();
}
/*----------第二步抓包-----------------*/
inti=0;
while(i<10){
Packetpacket=jpcap.getPacket();
if(packetinstanceofIPPacket&&((IPPacket)packet).version==4){
i++;
IPPacketip=(IPPacket)packet;//強轉
System.out.println("版本:IPv4");
System.out.println("優先權:"+ip.priority);
System.out.println("區分服務:最大的吞吐量:"+ip.t_flag);
System.out.println("區分服務:最高的可靠性:"+ip.r_flag);
System.out.println("長度:"+ip.length);
System.out.println("標識:"+ip.ident);
System.out.println("DF:Don'tFragment:"+ip.dont_frag);
System.out.println("NF:NoreFragment:"+ip.more_frag);
System.out.println("片偏移:"+ip.offset);
System.out.println("生存時間:"+ip.hop_limit);
Stringprotocol="";
switch(newInteger(ip.protocol)){
case1:
protocol="ICMP";
break;
case2:
protocol="IGMP";
break;
case6:
protocol="TCP";
break;
case8:
protocol="EGP";
break;
case9:
protocol="IGP";
break;
case17:
protocol="UDP";
break;
case41:
protocol="IPv6";
break;
case89:
protocol="OSPF";
break;
default:
break;
}
System.out.println("協議:"+protocol);
System.out.println("源IP"+ip.src_ip.getHostAddress());
System.out.println("目的IP"+ip.dst_ip.getHostAddress());
System.out.println("源主機名:"+ip.src_ip);
System.out.println("目的主機名:"+ip.dst_ip);
System.out.println("----------------------------------------------");
}
}
}
}
~
7. 關於Java網路編程的問題,導入的包我已經省略
我先運行看看,我也用過printwriter,不過代碼找不到了
後來用的發送對象
我去,你這個都沒有一個發送,都是發送一個接收到的消息,都沒有發送,怎麼會接收到消息,一直阻塞在讀取那裡
//改一點點就會有效果了
importjava.io.BufferedReader;
importjava.io.InputStreamReader;
importjava.io.PrintWriter;
importjava.net.Socket;
publicclassClient{
staticSocketserver;
publicstaticvoidmain(String[]args)throwsException{
System.out.println("我是客戶端");
server=newSocket("127.0.0.1",5678);
BufferedReaderin=newBufferedReader(newInputStreamReader(server.getInputStream()));
PrintWriterout=newPrintWriter(server.getOutputStream());
BufferedReaderwt=newBufferedReader(newInputStreamReader(System.in));
while(true){
Stringstr="我是客戶端";
System.out.println("阻塞");
out.println(str);
out.flush();
if(str.equals("end")){
break;
}
System.out.println(in.readLine());}
server.close();
}}
8. java怎樣截取網路數據包並分析呢...
java好像沒有這么底層的功能。
這么底層的功能應該是winpcap一類的驅動程序提供的。
截取網路數據包應該是稍微低級一點語言的事情,像是c++、c語言一類的,這類語言更適合編寫協議分析器。而且winpcap直接就已經提供了一個.h的頭文件用來編寫這類程序。
不過我記得有一個叫jpcap的東東,就是java使用的網路數據包工具,http://netresearch.ics.uci.e/kfujii/jpcap/doc/download.html
9. java網路編程包含些什麼
java網路編程通常包括三部分TCP/IP , UDP ,URL ;socket只是其中的一個套接字。web,jsp與上面一點關系也沒有,上面是j2se的內容。下面則是j2ee內容。web是一個服務,而jsp是一種技術。實在找關系的話,web包括了jsp.
10. java 中常用五大包有哪些
常用的五個
java.lang.*
提供利用
Java
編程語言進行程序設計的基礎類。最重要的類是
Object(它是類層次結構的根)和
Class(它的實例表示正在運行的應用程序中的類)。
java.util.*
包含集合框架、遺留的
collection
類、事件模型、日期和時間設施、國際化和各種實用工具類(字元串標記生成器、隨機數生成器和位數組、日期Date類、堆棧Stack類、向量Vector類等)。集合類、時間處理模式、日期時間工具等各類常用工具包
java.io.*
Java的核心庫java.io提供了全面的IO介面。包括:文件讀寫、標准設備輸出等。Java中IO是以流為基礎進行輸入輸出的,所有數據被串列化寫入輸出流,或者從輸入流讀入。
java.net.*
並非所有系統都支持
IPv6
協議,而當
Java
網路連接堆棧嘗試檢測它並在可用時透明地使用它時,還可以利用系統屬性禁用它。在
IPv6
不可用或被顯式禁用的情況下,Inet6Address
對大多數網路連接操作都不再是有效參數。雖然可以保證在查找主機名時
java.net.InetAddress.getByName
之類的方法不返回
Inet6Address,但仍然可能通過傳遞字面值來創建此類對象。在此情況下,大多數方法在使用
Inet6Address
調用時都將拋出異常。
java.sql.*
提供使用
JavaTM
編程語言訪問並處理存儲在數據源(通常是一個關系資料庫)中的數據的
API。此
API
包括一個框架,憑藉此框架可以動態地安裝不同驅動程序來訪問不同數據源。