社区
网络编程
帖子详情
UDP校验和
afafafafafafa
2010-04-26 05:21:28
谁有计算UDP校验和的代码发出来参考下 谢谢了
...全文
216
3
打赏
收藏
UDP校验和
谁有计算UDP校验和的代码发出来参考下 谢谢了
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jyh_baoding
2010-04-28
打赏
举报
回复
帮顶一个
尹成
2010-04-26
打赏
举报
回复
以下是我的源代码,
////////////////////////////////////////////////////////////////////
char* szSendBuf=Buffer;
//填充IP首部
ipHeader.h_lenver=iphdr->h_lenver;
ipHeader.tos=iphdr->tos;
ipHeader.total_len=iphdr->total_len;
ipHeader.ident=iphdr->ident;
ipHeader.frag_and_flags=iphdr->frag_and_flags;
ipHeader.ttl=iphdr->ttl;
ipHeader.proto=iphdr->proto;
ipHeader.checksum=iphdr->checksum; //注意添校验和
ipHeader.sourceIP=inet_addr(FilSou);
ipHeader.destIP=inet_addr(FilDes);
//填充UDP首部
udpHeader.uh_sport=pUdpHeader->uh_sport;
udpHeader.uh_dport=pUdpHeader->uh_sport;
udpHeader.uh_len=pUdpHeader->uh_len;
udpHeader.uh_sum=/*pUdpHeader->uh_sum*/0;
int iUdpChecksumSize = 0;
ZeroMemory(Buffer,MAX_PACKET_SIZE); //初始化发送缓冲区
memcpy(szSendBuf, &ipHeader.sourceIP, sizeof(ipHeader.sourceIP));
szSendBuf += sizeof(ipHeader.sourceIP);
iUdpChecksumSize += sizeof(ipHeader.sourceIP);
memcpy(szSendBuf, &ipHeader.destIP, sizeof(ipHeader.destIP));
szSendBuf += sizeof(ipHeader.destIP);
iUdpChecksumSize += sizeof(ipHeader.destIP);
szSendBuf++;
iUdpChecksumSize += 1;
memcpy(szSendBuf, &ipHeader.proto, sizeof(ipHeader.proto));
szSendBuf += sizeof(ipHeader.proto);
iUdpChecksumSize += sizeof(ipHeader.proto);
memcpy(szSendBuf, &udpHeader.uh_len, sizeof(udpHeader.uh_len));
szSendBuf += sizeof(udpHeader.uh_len);
iUdpChecksumSize += sizeof(udpHeader.uh_len);
memcpy(szSendBuf, &udpHeader, sizeof(udpHeader));
szSendBuf += sizeof(udpHeader);
iUdpChecksumSize += sizeof(udpHeader);
int UdpLenth = udpHeader.uh_len;
char temp[2000];
for (int m=0; m<UdpLenth;m++,szSendBuf++)
temp[m]=*szSendBuf;
// *szSendBuf ^=1;
iUdpChecksumSize +=UdpLenth;
unsigned cksum = checksum((USHORT *)Buffer, iUdpChecksumSize);
udpHeader.uh_sum = cksum;
ZeroMemory(Buffer, MAX_PACKET_SIZE);
szSendBuf = Buffer;
memcpy(szSendBuf, &ipHeader, sizeof(ipHeader));
szSendBuf += sizeof(ipHeader);
memcpy(szSendBuf, &udpHeader, sizeof(udpHeader));
szSendBuf += sizeof(udpHeader);
memcpy(szSendBuf,temp, UdpLenth);
if(bind(sock, (SOCKADDR FAR *)&Sender, sizeof(Sender))!=0)
{
printf( "Can't bind sender socket to local port!Program stop.\n ");//初始化失败返回-1
return -1;
}
int rect=sendto(sock, Buffer, RecvSize,
0, (struct sockaddr*)&addr_in, sizeof(addr_in));
if (rect==SOCKET_ERROR)
{
printf("UDP send error!:%d\\ n",WSAGetLastError());
return false;
}
else
printf("UDP send ok!\n");
////////////////////////////////////////////////////////////////
//CheckSum:计算校验和的子函数
USHORT checksum(USHORT *buffer, int size)
{
unsigned long cksum=0;
while(size >1)
{
cksum+=*buffer++;
size -=sizeof(USHORT);
}
if(size )
{
cksum += *(UCHAR*)buffer;
}
cksum = (cksum >> 16) + (cksum & 0xffff);
cksum += (cksum >>16);
return (USHORT)(~cksum);
}
Eleven
2010-04-26
打赏
举报
回复
http://topic.csdn.net/t/20050301/21/3816586.html
UDP
校验和
算法
UDP
校验和
算法,给出了
UDP
校验和
算法的C语言程序。
UDP
校验和
计算工具
使用Java开发的
UDP
校验和
,将完整的
UDP
报文黏贴进去,计算出对应的
UDP
校验和
udp
校验和
计算
udp
校验和
,基于wireshark的TCP和
UDP
报文分析
利用Python计算
udp
校验和
输入一个完整的以太网数据包,即可计算出
udp
校验和
,并同时输出原以太网数据包中的
udp
校验和
,方便检验。附源码可直接下载运行。
IP
校验和
和
UDP
校验和
代码
IP和
UDP
检验和代码,可以过课设的!简单易懂,就是源代码!
网络编程
18,356
社区成员
64,214
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章