资源简介
使用C语言实现原始套接字从数据链路层到应用层的操作,Linux系统
代码片段和文件信息
//使用原始套接字构造UDP数据包并发送(已经实现)
//程序说明:不使用任何关于报头的结构体直接在光秃的字符数组中严格按照协议规定来一次填写报头内容从而可以构造出完整的数据包
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#ifdef HAVE_CONFIG_H
#include
#endif
int checksum(int *buf int nword);//校验和函数
int main(int argc char *argv[])
{
//1.创建通信用的原始套接字
int sock_raw_fd = socket(PF_PACKET SOCK_RAW htons(ETH_P_ALL));
//2.根据各种协议首部格式构建发送数据报
unsigned char send_msg[1024] = {
//--------------组MAC--------14------
0xB8 0x81 0x98 0x58 0xBC 0xA4 //dst_mac: B8:81:98:58:BC:A4
0xA1 0xB2 0xC3 0xD4 0xE5 0xF6 //src_mac: A1:B2:C3:D4:E5:F6
0x08 0x00 //类型:0x0800 IP协议
//--------------组IP---------20------
0x45 0x00 0x00 0x00 //版本号:4 首部长度:20字节 TOS:0 --总长度--:
0 0 0 0 //16位标识、3位标志、13位片偏移都设置0
128 17 0x00 0x00 //TTL:128、协议:UDP(17)、16位首部校验和
12 34 56 78 //src_ip: 12.34.56.78
192 168 0 103 //dst_ip: 192.168.0.103
//--------------组UDP--------8+78=86------
0x1f 0x90 0x17 0x70 //src_port:0x1f90(8080) dst_port:0x1f90(8080)
0x00 0x00 0x00 0x00 //#--16位UDP长度--30个字节、#16位校验和
};
int len = sprintf(send_msg+42 “%s“ “this is for the udp test“);
if(l
- 上一篇:C语言实现操作系统中生产者消费者
- 下一篇:面试常写的c语言函数
相关资源
- libnet发送udp和tcp包
- MFC UDP编程
- 使用socket套接字发送udp数据包
- C语言实现TCP/IP协议通信和UDP协议通信
- c语言+UDP+DES加密+socket编程
- 基于udp的socket编程
- RakNet 基于UDP网络传输协议的C++网络库
- 基于UDP的简单可视化界面聊天程序c
- 基于VC++6.0的UDP通讯
- 自己编写的C++基于socket编程的UDP聊天
- VC++UDP网络聊天程序
- C语言写的UDP文件传输
- 基于UDP协议的聊天程序 MFC环境下的
- MFC UDP 聊天
- 基于VC++的UDP文件传输系统
- C++基于UDP的控制台局域网聊天程序
- 基于UDP的通信程序设计
- 网络调试助手---开发环境:VC++6.0 基于
- C++网络编程文件之第七章 网络层协议
- 基于MFC的UDP通信实现
- MFC中利用CSocket实现UDP通信
- MFC实现UDP网络编程
- UDP简单文件传输
- 基于MFC对话框的UDP客户端服务器端程
- 用MFC开发的UDP接收和发送软件
- 完成端口IOCP+UDP源码
- 基于UDP协议的简单聊天系统设计与实
- c语言简易飞秋
- c++(socket)音频传输
- UDP打洞有心跳包和断网自动连接功能
评论
共有 条评论