java socket 包头包体_使用JAVA上抓取Socket服务端和客户端通信TCP数据包
使用Java抓取Socket通信TCP数据包
使用WireShark默认使用的是winpcap去抓本地环回的数据包,需要安装npcap再在Wireshark选择本地环回的网卡抓包
在Java-Socket中,在本地Socket不使用127网段无法与服务端进行通信。
但是常用的Jcap和Pcap4j都是依据libpcap/winpcap实现的。但是这俩又抓不到本地127网段的数据包。
所以选择在局域网中使用两台设备进行数据传输并抓取相应数据包
抓包需要使用的winpcap地址:www.winpcap.org/
使用Pcap4j的Maven依赖
org.pcap4j
pcap4j-core
1.7.5
org.pcap4j
pcap4j-packetfactory-static
1.7.5
123456789101112复制代码
服务端:import org.pcap4j.core.*;
import org.pcap4j.packet.Packet;
import java.io.IOException;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
public class TCPServer {
public static void Pcap4j(InetAddress addr){
{
//1.Pcap抓取不 了本地127的包
//2.本地Socket不用127网段的包无法与服务端通信
try {
PcapNetworkInterface nif = Pcaps.getDevByAddress(addr);
int snaplen = 64 * 1024;
int timeout = 50;
//初始化抓包器
PcapHandle.Builder phb = new PcapHandle.Builder(nif.getName()).snaplen(snaplen)
.promiscuousMode(PcapNetworkInterface.PromiscuousMode.PROMISCUOUS).timeoutMillis(timeout)
.bufferSize(1 * 1024 * 1024);
PcapHandle handle = phb.build();
/** 设置TCP过滤规则 */
String filter = "tcp and port 7788";//过滤条件是tcp数据包,端口号为7788
handle.setFilter(filter, BpfProgram.BpfCompileMode.OPTIMIZE);
PacketListener listener = new PacketListener() {
@Override
public void gotPacket(Packet packet) {
System.out.println(packet);
System.out.println("-----------------------------------------");
}
};
handle.loop(3, listener);//loop里设置抓3个数据包,要无限抓设置-1
} catch (Exception e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) throws IOException, PcapNativeException, NotOpenException {
ServerSocket serverSocket=new ServerSocket(7788);
System.out.println("建立服务端");
InetAddress addr=InetAddress.getLocalHost();
Pcap4j(addr);
Socket socket=serverSocket.accept();
System.out.println("连接成功");
socket.close();
serverSocket.close();
}
}
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950复制代码
客户端:import java.io.*;
import java.net.Socket;
public class TCPClient {
public static void main(String[] args) throws IOException {
Socket socket=new Socket("192.168.43.15",7788);
System.out.println("客户端连接成功");
socket.close();
}
}
12345678910复制代码
运行结果:
java socket 包头包体_使用JAVA上抓取Socket服务端和客户端通信TCP数据包相关推荐
- springboot实现SSE服务端主动向客户端推送数据,java服务端向客户端推送数据,kotlin模拟客户端向服务端推送数据
SSE服务端推送 服务器向浏览器推送信息,除了 WebSocket,还有一种方法:Server-Sent Events(以下简称 SSE).本文介绍它的用法. 在很多业务场景中,会涉及到服务端向客户端 ...
- C# Socket服务端与客户端通信(包含大文件的断点传输)
步骤: 一.服务端的建立 1.服务端的项目建立以及页面布局 2.各功能按键的事件代码 1)传输类型说明以及全局变量 2)Socket通信服务端具体步骤: (1)建立一个Socket (2)接收 ...
- C++socket编程(三):3.6 服务端recv客户端发送的数据
服务端中获取客户端发送过来的数据一定是关闭套接字之前进行,close之后就收不到数据了. 一般读取数据一般用read,windows上一般用recv(本质上也是read),但是为了跨平台,所以一般用r ...
- java jsoup爬动态网页_使用Jsoup+HtmlUnit抓取动态网页数据
最后更新日期为2018.1.3 只为自己留个记录 待添加功能: 1.获取历史全部消息 2.爬取大于10条数据 3.自定义抓取公众号信息 package cc.buckler.test; import ...
- socket客户端和服务器通信协议,51. Socket服务端和客户端使用TCP协议通讯
Socket服务器是网络服务中常用的服务器.使用 go 语言实现这个业务场景是很容易的. 这样的网络通讯,需要一个服务端和至少一个客户端. 我们计划构建一个这样的通讯过程.服务端启动后等待客户端的访问 ...
- 【转】DICOM通信 - PDU数据包(2)
转自:DICOM通信 - PDU数据包(2)_翼遥君的博客-CSDN博客 DICOM通信-PDU数据包(1)博客中主要分析了DICOM通信协议的连接协商请求和连接协商应答. 在7个PDU数据包中还有5 ...
- Java中Socket通信-服务端和客户端双向传输字符串实现
场景 什么是socket 在计算机通信领域,socket 被翻译为"套接字",它是计算机之间进行通信的一种约定或一种方式.通过 socket 这种约定,一台计算机可以接收其他计算机 ...
- 网络编程—使用C语言实现发送TCP数据包,以命令行形式运行:SendTCP source_ip source_port dest_ip dest_port;(原理和常见错误分析)
任务要求: 1.以命令行形式运行:SendTCP source_ip source_port dest_ip dest_port: 2.头部参数自行设定,数据字段为"This is my h ...
- socket.io服务端是java_SpringBoot(23) 集成socket.io服务端和客户端实现通信
@Slf4j @Service(value = "socketIOService") public class SocketIOServiceImpl implements ISo ...
最新文章
- Hive将查询结果保存到另一张表中
- 清华大学数学教授吐槽不会做孙子的小学奥数:这学的不是数学,是戏法
- bash --config command not found 报错
- 3个阶段 项目征名_项目管理的3个关键动作:启动、推进、复盘
- Source Insight3.x注册码
- oracle表空间名字忘了,忘记Oracle用户名密码、及表空间对应的数据库文件地址
- sql server 提取汉字/数字/字母的方法
- Python FastAPI 微信公众号后台服务器验证
- 【安信可首款4G模组CA-01直连阿里物联网平台②】一机一密认证方式连接
- matlab学霸表白公式,一个理科学霸的表白:数学公式的超酷表白
- HTML期末学生大作业-节日网页作业html+css+javascript
- java poi 导出excel设置数据有效性
- 中国半导体要从点到面,存储器为何是最好下手点?
- 视频教程-Spring Data JPA项目-Java
- 关于Adams驱动函数单位与符号d的问题
- 用php制作微信小程序,微信小程序 自己制作小组件
- JavaWeb、Tomcat、jquery:Failed to load resource: the server responded with a status of 500 ()
- h61 nvme硬盘_英特尔E3处理器网友发来咨询:H81B85老主板上NVME固态支持5775C
- 所谓的世纪迷题,连大名鼎鼎的爱因斯坦也曾为此题大伤脑筋?
- 函数极限存在准则:夹逼准则