求帮忙

@TOC#include<stdio.h>
#include<winsock2.h>
#include<wtypes.h>
#pragma comment(lib,“ws2_32.lib”)
#define SIO_RCVALL_WSAIOW(IOC_VENDOR)
//IPV4包头结构体
typedef struct ip_header{
unsigned char ver_ihl;//Version(4bits)+Internet header length(4bits)
unsigned char tos; //Type of service
unsigned short tlen; //Total length
unsigned short identification; //Identification
unsigned short flags_fo; //Flags(3bits)+Flagment offset(13bits)
unsigned char ttl; //Time to live
unsigned char proto; //Protocol
unsigned short crc; //Header checksum
u_char ip_src4; //Source address
u_char ip_dst4; //Destination address
}IPHEADER,*PIPHEADER;
//UDP包头结构体
typedef struct udp_header{
u_short sport; //源端口号
u_short dport; //目的端口号
u_short len; //数据报长度
u_short crc; //检验和
}UDPHEADER,PUDPHEADER;
//全局变量
SOCKET m_Socket;
//函数声明
void InitWinsock2(); //初始化Winsock2
void BindSocket(); //绑定套接字
void RecieveUDP(); //捕获UDP数据报
int main(int argc,char argv[])
{
printf("\n");
printf(“捕获UDP数据报,并解析UDP包头\n”);
printf(“2017级邑大大学生 余卓奕 编\n”);
printf("
\n");
InitWinsock2();
BindSocket();
RecieveUDP();
closesocket(m_Socket);
WSACleanup();
return 0;
}
//初始化WinSock2
void InitWinsock2(){
WSADATA wsaData;
WORD version;
int ret;
version=MAKEWORD(2,2);
ret=WSAStartup(version,&wsaData);
if(ret!=0){
printf(“Failed to load winsock2 library.\n”);
return ;
}
}
//对网络进行监听
void BindSocket(){
SOCKET_ADDRESS_LIST slist=NULL;
char buffer[2048];
DWORD dwBytesRet;
SOCKADDR_IN m_SockAddr;
DWORD dwVal=1;
//建立套接字
m_Socket=WSASocket(AF_INET,SOCK_RAW,IPPROTO_IP,NULL,0,WSA_FLAG_OVERLAPPED);
if(m_Socket==INVALID_SOCKET)
return ;
//绑定套接字
if(WSAIoctl(m_Socket,SIO_ADDRESS_LIST_QUERY,NULL,0,&buffer,2048,&dwBytesRet,NULL,NULL)==SOCKET_ERROR)
return ;
slist=(SOCKET_ADDRESS_LIST
)buffer;
if(slist->iAddressCount<=0)
return ;
m_SockAddr.sin_addr.s_addr=((SOCKADDR_IN
)slist->Address[0].lpSockaddr)->sin_addr.s_addr;
m_SockAddr.sin_family=AF_INET;
m_SockAddr.sin_port=htons(0);
if(::bind(m_Socket,(SOCKADDR
)&m_SockAddr,sizeof(m_SockAddr))SOCKET_ERROR)
return;
if(WSAIoctl(m_Socket,SIO_RCVALL,&dwVal,sizeof(dwVal),NULL,0,&dwBytesRet,NULL,NULL)SOCKET_ERROR)
return;
}
void RecieveUDP()
{
DWORD dwFlags;
DWORD dwBytesRead;
WSABUF wbuf;
char buff1[0x1500];
wbuf.len=0x1500;
wbuf.buf=buff1;
unsigned char buf;
PIPHEADER ip_header;
PUDPHEADER udp_header;
while(1){
dwFlags=0;
WSARecv(m_Socket,&wbuf,1,&dwBytesRead,&dwFlags,NULL,NULL);
//捕获数据报
WSABUF pBuf=(WSABUF)&wbuf;
buf=(UCHAR
)GlobalAlloc(GPTR,pBuf->len);
buf=(unsigned char *)pBuf->buf;
ip_header=(PIPHEADER)buf;
udp_header=(PUDPHEADER)(buf+sizeof(IPHEADER));
if(ip_header->proto
17) //IPv4包头中Proto字段值为17表示上层数据包
{
printf(“源端口:%d”,ntohs(udp_header->sport));
printf(“目的端口:%d”,ntohs(udp_header->dport));
printf(“报文长度:%d”,ntohs(udp_header->len));
printf(“校验和:%d”,ntohs(udp_header->crc));
printf("
============================\n");
}
}
}
编译发现程序报了以下两条错误,求帮忙
In function ‘void BindSocket()’:
[Error] ‘SIO_RCVALL’ was not declared in this scope

欢迎使用Markdown编辑器

你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。

新的改变

我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:

  1. 全新的界面设计 ,将会带来全新的写作体验;
  2. 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;
  3. 增加了 图片拖拽 功能,你可以将本地的图片直接拖拽到编辑区域直接展示;
  4. 全新的 KaTeX数学公式 语法;
  5. 增加了支持甘特图的mermaid语法1 功能;
  6. 增加了 多屏幕编辑 Markdown文章功能;
  7. 增加了 焦点写作模式、预览模式、简洁写作模式、左右区域同步滚轮设置 等功能,功能按钮位于编辑区域与预览区域中间;
  8. 增加了 检查列表 功能。

功能快捷键

撤销:Ctrl/Command + Z
重做:Ctrl/Command + Y
加粗:Ctrl/Command + B
斜体:Ctrl/Command + I
标题:Ctrl/Command + Shift + H
无序列表:Ctrl/Command + Shift + U
有序列表:Ctrl/Command + Shift + O
检查列表:Ctrl/Command + Shift + C
插入代码:Ctrl/Command + Shift + K
插入链接:Ctrl/Command + Shift + L
插入图片:Ctrl/Command + Shift + G
查找:Ctrl/Command + F
替换:Ctrl/Command + G

合理的创建标题,有助于目录的生成

直接输入1次#,并按下space后,将生成1级标题。
输入2次#,并按下space后,将生成2级标题。
以此类推,我们支持6级标题。有助于使用TOC语法后生成一个完美的目录。

如何改变文本的样式

强调文本 强调文本

加粗文本 加粗文本

标记文本

删除文本

引用文本

H2O is是液体。

210 运算结果是 1024.

插入链接与图片

链接: link.

图片: Alt

带尺寸的图片: Alt

居中的图片:

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值