导航:首页 > 编程语言 > java网络包

java网络包

发布时间:2022-11-19 21:37:17

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
包括一个框架,凭借此框架可以动态地安装不同驱动程序来访问不同数据源。

阅读全文

与java网络包相关的资料

热点内容
服务器软路由怎么做 浏览:289
冰箱压缩机出口 浏览:225
OPT最佳页面置换算法 浏览:642
网盘忘记解压码怎么办 浏览:852
文件加密看不到里面的内容 浏览:651
程序员脑子里都想什么 浏览:430
oppp手机信任app在哪里设置 浏览:185
java地址重定向 浏览:268
一年级下册摘苹果的算法是怎样的 浏览:448
程序员出轨电视剧 浏览:88
服务器系统地址怎么查 浏览:54
解压游戏发行官 浏览:601
国外小伙解压实验 浏览:336
顶级大学开设加密货币 浏览:437
java重载与多态 浏览:528
腾讯应届程序员 浏览:942
一键编译程序 浏览:129
语音加密包哪个好 浏览:341
有什么学习高中语文的app 浏览:283
安卓手机的表格里怎么打勾 浏览:411