java socket 抓包_一个简单的socket程序运行与抓包查看

步骤一、编译

gcc server.c -o server.out

gcc client.c -o client.out

步骤二、打开wireshark

步骤三、运行

./server.out

./client.out

步骤四、查看wireshark抓包结果,如下图所示。

由于wireshark把服务器端返回的字符对应的字节识别成IPA协议,而又有部分格式与IPA不一致,所以提示“Malformed Packet”。直接看二进制对应的字符就是服务器发来的值。

4d44f503545ba1f6c9c8338963e69f10.png

Linux网络编程(一):一个简单的socket程序

服务器: /* *tcp_server.c */ #include #include #include

什么是消息循环,一个简单的win32程序如何运行?

预备知识 1.什么是句柄? (HANDLE) 在win32编程中有各种句柄,那么什么是句柄呢? #define DECLARE_HANDLE(name) struct name##_ { int un ...

(原创)如何使用boost.asio写一个简单的通信程序(一)

boost.asio相信很多人听说过,作为一个跨平台的通信库,它的性能是很出色的,然而它却谈不上好用,里面有很多地方稍不注意就会出错,要正确的用好asio还是需要花一番精力去学习和实践的,本文将通过介 ...

编写一个简单的C++程序

编写一个简单的C++程序 每个C++程序都包含一个或多个函数(function),其中一个必须命名为main.操作系统通过调用main来运行C++程序.下面是一个非常简单的main函数,它什么也不干, ...

一个简单的flask程序

初始化 所有Flask程序都必须创建一个程序实例. 程序实例是Flask类的对象,经常使用下述代码创建: from flask import Flask app = Flask(__name__) F ...

Linux系统学习笔记之 1 一个简单的shell程序

不看笔记,长时间不用自己都忘了,还是得经常看看笔记啊. 一个简单的shell程序 shell结构 1.#!指定执行脚本的shell 2.#注释行 3.命令和控制结构 创建shell程序的步骤 第一步: ...

第一讲 一个简单的Qt程序分析

本文概要:通过一个简单的Qt程序来介绍Qt程序编写的基本框架与一些Qt程序中常见的概念 #include #include

Windows socket之最简单的socket程序

原文:Windows socket之最简单的socket程序 最简单的服务器的socket程序流程如下(面向连接的TCP连接 ): 1. WSAStartup(); 初始化网络库的使用. 2. soc ...

Java入门篇(一)——如何编写一个简单的Java程序

最近准备花费很长一段时间写一些关于Java的从入门到进阶再到项目开发的教程,希望对初学Java的朋友们有所帮助,更快的融入Java的学习之中. 主要内容包括JavaSE.JavaEE的基础知识以及如何 ...

随机推荐

线性回归、梯度下降(Linear Regression、Gradient Descent)

转载请注明出自BYRans博客:http://www.cnblogs.com/BYRans/ 实例 首先举个例子,假设我们有一个二手房交易记录的数据集,已知房屋面积.卧室数量和房屋的交易价格,如下表: ...

ubuntu方块乱码

更改下环境变量/etc/default/locale LANG="en_US.UTF-8"LANGUAGE="en_US:en"

项目学习——电力系统底层架构ssh

电力系统底层架构1.建立web工程 创建数据库 导入向对应的jar包2. 持久层: (1)在cn.itcast.elec.domain中创建持久化类ElecText @SuppressWarnings ...

php 如何判断一个常量是否已经定义

php 如何判断一个常量是否已经定义 http://blog.csdn.net/raojinpg/article/details/6222882 如果看过手册的人肯定知道,可以直接忽视 不过在实际项目 ...

linux c 之signal 和sigaction区别

http://blog.csdn.net/muge0913/article/details/7331129 要对一个信号进行处理,就需要给出此信号发生时系统所调用的处理函数.可以对一个特定的信号(除去 ...

java实现堆结构

一.前言 之前用java实现堆结构,一直用的优先队列,但是在实际的面试中,可能会要求用数组实现,所以还是用java老老实实的实现一遍堆结构吧. 二.概念 堆,有两种形式,一种是大根堆,另一种是小根堆. ...

Day042---浮动 背景图设置 相对定位绝对定位

1.练习浮动 2.文本属性和字体属性 文本对齐 ​ text-align left 左对齐 right 右对齐 center 中心对齐 justify 两边对齐 只适应于英文 text-indent ...

PE知识复习之PE新增节

PE知识复习之PE新增节 一丶为什么新增节.以及新增节的步骤 例如前几讲.我们的PE文件在空白区可以添加代码.但是这样是由一个弊端的.因为你的空白区节属性可能是只读的不能执行.如果你修改了属性.那么程 ...

PHP之pear包总结

现在我们开发的时候,尤其是使用框架进行项目开发的时候,都会有一个专门的包管理工具,对,那就是composer,使用这个工具可以简单快速的引入一个代码包,十分快捷好用.接下就总结一下,经常使用到的pea ...

html5(四) canvas

http://www.cnblogs.com/Gyoung/archive/2013/04/08/2994515.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的使用 socket 的 C 代码示例: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/socket.h> #include <arpa/inet.h> #include <netinet/in.h> #include <netinet/ip.h> #include <netinet/tcp.h> #define BUFFER_SIZE 65536 void print_packet(unsigned char* buffer, int size) { struct iphdr *iph = (struct iphdr*)buffer; unsigned short iphdrlen = iph->ihl * 4; struct tcphdr *tcph = (struct tcphdr*)(buffer + iphdrlen); printf("Source IP: %s\n", inet_ntoa(*(struct in_addr*) &iph->saddr)); printf("Destination IP: %s\n", inet_ntoa(*(struct in_addr*) &iph->daddr)); printf("Source Port: %d\n", ntohs(tcph->source)); printf("Destination Port: %d\n", ntohs(tcph->dest)); printf("Data: "); for(int i = iphdrlen + tcph->doff * 4; i < size; i++) { printf("%c", buffer[i]); } printf("\n\n"); } int main() { int sock_raw = socket(AF_INET, SOCK_RAW, IPPROTO_TCP); if(sock_raw < 0) { printf("Socket creation error\n"); return 1; } unsigned char buffer[BUFFER_SIZE]; int buffer_len; while(1) { buffer_len = recvfrom(sock_raw, buffer, BUFFER_SIZE, 0, NULL, NULL); if(buffer_len < 0) { printf("Packet receive error\n"); return 1; } print_packet(buffer, buffer_len); } close(sock_raw); return 0; } ``` 该程序使用原始套接字(raw socket)来监听所有传入的 TCP 数据。当接收到一个数据时,程序会打印出源 IP 地址、目标 IP 地址、源端口、目标端口以及数据内容。 请注意,使用原始套接字需要在 root 权限下运行。另外,这只是一个简单的示例,实际使用时需要考虑更多的细节和安全问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值