谁有IPX在局域网里收发和解析IPX包的例子!

fz_zhou 2002-08-27 09:05:48
我是刚毕业的学生,大家帮帮我吧,再做不出来,就要被公司淘汰了!
...全文
143 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
firmamenthy 2002-08-29
  • 打赏
  • 举报
回复
gz
我不是大明 2002-08-27
  • 打赏
  • 举报
回复
#include <unistd.h>
#include <sys/errno.h>

#include <netdb.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netipx/ipx.h>

这些头文件我去什么地方下载,我的机器上没有
我不是大明 2002-08-27
  • 打赏
  • 举报
回复
谢谢大家的回答,我去试一下!
kingzai 2002-08-27
  • 打赏
  • 举报
回复
yes,you can use raw socket with IPX
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/errno.h>

#include <netdb.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netipx/ipx.h>

#define IPX_DATA_LEN 20

#define IPXPROTO_NETBIOS 20

u_short checksum(u_short * data,u_short length)
{
register long value;
u_short i;

for(i=0;i<(length>>1);i++)
value+=data[i];

if((length&1)==1)
value+=(data[i]<<8);

value=(value&65535)+(value>>16);

return(~value);
}


int main(int argc, char ** argv)
{
struct sockaddr_ipx sipx;
int sock,err;
char buffer[sizeof(struct ipx)+IPX_DATA_LEN];
struct ipx * ipxheader=(struct ipx *)buffer;
struct ipx_addr addr;
char src_addr[30];
char dst_addr[30];
char sck_addr[30];

if (argc<3)
{
fprintf(stderr,"usage: %s src_ipx_addr dst_ipx_addr\n",argv[0]);
return (-1);
}


bzero(&sipx,sizeof(struct sockaddr_ipx));
sipx.sipx_family=AF_IPX;

bzero(&buffer, sizeof(struct ipx)+IPX_DATA_LEN);

ipxheader->ipx_len=sizeof(struct ipx)+IPX_DATA_LEN;
ipxheader->ipx_tc =0;
ipxheader->ipx_pt =IPXPROTO_NETBIOS;

addr=ipx_addr(argv[2]);
bcopy(&addr, &sipx.sipx_addr, sizeof(struct ipx_addr));
bcopy(&addr,&ipxheader->ipx_dna, sizeof(struct ipx_addr));
addr=ipx_addr(argv[1]);
bcopy(&addr,&ipxheader->ipx_sna, sizeof(struct ipx_addr));

ipxheader->ipx_sum=0;//checksum((u_short *)ipxheader, sizeof(struct ipx)
);

if ((sock=socket(PF_IPX,SOCK_RAW,IPXPROTO_RAW))==-1)
{
fprintf(stderr,"couldn't allocate raw socket\n");
return (-1);

}

sprintf(sck_addr,"%s",ipx_ntoa(sipx.sipx_addr));
sprintf(src_addr,"%s",ipx_ntoa(ipxheader->ipx_sna));
sprintf(dst_addr,"%s",ipx_ntoa(ipxheader->ipx_dna));

if((err=sendto(sock, buffer, sizeof(struct ipx)+IPX_DATA_LEN, 0, (struct sockad
dr *) &sipx, sizeof(struct sockaddr_ipx)))==-1)
{
fprintf(stderr,"couldn't send packet\n");
fprintf(stderr,"%s : %s -> %s\n",sck_addr,src_addr,dst_addr);

switch(errno)
{
case EBADF: { fprintf(stderr,"EBADF\n"); break; }
case EACCES: { fprintf(stderr,"EACCES\n"); break;}
case ENOTSOCK: { fprintf(stderr,"ENOTSOCK\n");break;}
case EFAULT: { fprintf(stderr,"EFAULT\n"); break;}
case EMSGSIZE: { fprintf(stderr,"EMSGSIZE\n"); break;}
case EAGAIN: { fprintf(stderr,"EAGAIN\n"); break;}
case ENOBUFS: { fprintf(stderr,"ENOBUFS\n"); break;}
case EHOSTUNREACH: { fprintf(stderr,"EHOSTUNREACH\n"); break;}
default: { fprintf(stderr,"%d: unknown error\n",errno); break;}
}
return (-1);
}

fprintf(stderr,"IPX packet was sent:\n%s : %s -> %s\n",sck_addr,src_addr,dst_ad
dr);
return (0);
}
我不是大明 2002-08-27
  • 打赏
  • 举报
回复
我现在已经知道了,IPX和IP是两个都可以"自路由"的协议,连头都不一样!在Win2000下我可以用原始套接字来截!
....................
但用
m_s = socket( AF_IPX , SOCK_RAW , NSPROTO_IPX ) ;
程序就会出错!
(用m_s = socket( AF_INET , SOCK_RAW , IPPROTO_IP)不会!)
................
能不能也用原始套接字来截IPX包!
snsins 2002-08-27
  • 打赏
  • 举报
回复
IPX/SPX协议和TCP/IP协议不同,他不是使用的IP地址
而是网段地址和网卡地址,别的都一样
主要就这点区别
你自己再查查资料
kingzai 2002-08-27
  • 打赏
  • 举报
回复
if you need something simple, ncpfs (source) package comes with
ipxdump/ipxparse (ftp://platan.vc.cvut.cz/pub/linux/ncpfs/latest/*.tgz).
If you need something more detailed, there is
ftp://platan.vc.cvut.cz/pub/linux/ncpfs/ncpanal-0.02.tgz
all above work in LinuX.and I find a MFC example from codeproject.
http://www.codeproject.com/internet/ipxcheck.asp
我不是大明 2002-08-27
  • 打赏
  • 举报
回复
IP包我自己已经参老别人的程序做了一个sniffer程序,但是我发现不能收到IPX的数据!
我把我的程序和系统自自带的网络监视器对比,发现IP包我都收到了,但是用IPX的就没有收到!

我要截的包是截自己机器上的别人发过来的包,用sniffer没有问题!现在就是想试出IPX怎么收到!
snsins 2002-08-27
  • 打赏
  • 举报
回复
IPX包头的格式和定义在MSDN里有

我以前看过
但是具体在什么地方忘记了
snsins 2002-08-27
  • 打赏
  • 举报
回复
基本上很难
太难了

记得以前在

http://shotgun.xici.net
上有一个sniffer的源代码

叫gunsniffer
你去找找

不知道你说的是要截获别人的IPX包还是想自定义IPX包头来收发
如果想自定义IPX包来收发
用原始套接字试一试

如果要截获别人的包
那就更难了
duduwolf 2002-08-27
  • 打赏
  • 举报
回复
ip包的好办,ipx还没有弄过,我帮你找找有没有这方便的资料先
我不是大明 2002-08-27
  • 打赏
  • 举报
回复
#include <netdb.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netipx/ipx.h>

哪里有下载,我找了两小时在网上都没有找到!
我不是大明 2002-08-27
  • 打赏
  • 举报
回复
我用得系统是Win2000 sever,IPX/SPX,WAP,Netware Client都装了!我的程序就是发不出来!
我不是大明 2002-08-27
  • 打赏
  • 举报
回复
to:ququshb(忘求了)
谢谢,只要能把数据发出来就行,不要很稳定!

vcfan@myhexin.com

麻烦你也告诉我网卡地址在IPX里面怎么定义!

ququshb 2002-08-27
  • 打赏
  • 举报
回复
你制的NetWare 网吗?
上大学的时候在学校做过一点的。
是直接调用的netware 的中断,(书上讲的这么做)
想用ipx写一个聊天的程序
做了几个月,能传通数据了,
但是,老出问题,(水平低了)
你要吗?
是全dos的。
glhorse 2002-08-27
  • 打赏
  • 举报
回复
标记先
kingzai 2002-08-27
  • 打赏
  • 举报
回复
有些是UNIX下的头文件,有些是自己定义的,改成win32应该不难
第6章 网络基础知识 6.1 计算机网络基础 6.2 数据通信的基本概念 6.3 局域网知识 6.4 实现Internet连接的相关技术 6.5 网络互连 6.6 共享文档和文件夹 6.7 Internet提供的服务 6.8 连接到Internet 6.9 共享上网 计算机应用基础课件——网络基础知识全文共53页,当前为第1页。 网络基础知识 6.10 浏览Internet 6.11 搜索和下载网络资源 6.12 著名网站介绍 6.13 网上聊天 6.14 网上收发电子邮件 6.15 使用Foxmail收发邮件 6.16 使用BBS 6.17 使用远程桌面 6.18 网络安全与病毒防护 计算机应用基础课件——网络基础知识全文共53页,当前为第2页。 根据网络范围以及计算机之间互联的距离,计算机网络可以分为局域网(LAN)和广域网(WAN)。局域网涉及的范围比较小,一般在10 km以内,通常单位内部使用的小范围网络就属于局域网。而广域网涉及的范围比较大,一般可从几km到几万km,它可以连通遍布全球的计算机,通常需要借助公共的通信设施或卫星通信。 通过本章的学习应了解计算机网络的发展、局域网的拓扑结构、局域网中共享资源的使用方法、Internet基础知识、网页的浏览、资源的搜索与下载、电子邮件的收发等内容。 本章概述 计算机应用基础课件——网络基础知识全文共53页,当前为第3页。 6.1 计算机网络基础 6.1.1 计算机网络概述 图6.1 计算机网络组成示意图 图6.2 现代计算机网络结构示意图 6.1.2 计算机网络的体系结构 图6.3 OSI模型 计算机应用基础课件——网络基础知识全文共53页,当前为第4页。 6.2 数据通信的基本概念 6.2.1 基本概念 信号与信道 模拟通信和数字通信 数据传输方式 带宽和数据传输率 MAC地址 计算机应用基础课件——网络基础知识全文共53页,当前为第5页。 6.2 数据通信的基本概念 6.2.2 无线传输媒体 无线电短波通信 地面微波接力通信 红外线和激光 卫星通信 VSAT卫星通信 计算机应用基础课件——网络基础知识全文共53页,当前为第6页。 6.2 数据通信的基本概念 6.2.3 计算机网络的分类 局域网(Local Area Network,LAN) 城域网(Metropolitan Area Network,MAN) 广域网(Wide Area Network,WAN) 6.2.4 数据通信技术 调制解调技术 多路复用技术 数据交换技术 计算机应用基础课件——网络基础知识全文共53页,当前为第7页。 6.3 局域网知识 局域网是在小范围(例如一个实验室、一幢大楼、一个校园)内将若干种计算机设备互相连接的计算机网络。局域网运行速度相对较高,一般在在0.1 Mb/s~100 Mb/s。 计算机应用基础课件——网络基础知识全文共53页,当前为第8页。 6.3 局域网知识 6.3.1 局域网使用的设备 图6.4 局域网示意图 服务器 工作站 传输介质 网络连接设备 与广域网相连接的调制解调设备 计算机应用基础课件——网络基础知识全文共53页,当前为第9页。 6.3 局域网知识 6.3.2 局域网传输介质 双绞线 同轴电缆 光纤(光导纤维) 6.3.3 局域网的拓扑结构 总线型结构 星型结构 环型结构 混合型结构 计算机应用基础课件——网络基础知识全文共53页,当前为第10页。 6.3 局域网知识 6.3.4 局域网的两种工作模式 客户机/服务器模式 对等模式 6.3.5 常用操作系统简介 Windows 操作系统 UNIX操作系统 Linux操作系统 NetWare操作系统 计算机应用基础课件——网络基础知识全文共53页,当前为第11页。 6.3 局域网知识 6.3.6 常见的网络协议 TCP/IP协议 IPX/SPX及其兼容协议 NetBEUI协议 AppleTalk协议 计算机应用基础课件——网络基础知识全文共53页,当前为第12页。 6.4 实现Internet连接的相关技术 近几年来,基于TCP/IP协议的Internet已逐步发展成为当今世界上规模最大、拥有用户和资源最多的一个超大型计算机网络,TCP/IP协议也因此成为事实上的工业标准。IP网络正逐步成为当代乃至未来计算机网络的主流。以下我们简单了解在Internet连接实现中常应用和接触到的技术、协议标准。 计算机应用基础课件——网络基础知识全文共53页,当前为第13页。 6.4 实现Internet连接的相关技术 6.4.1 IP地址的作用 6.4.2 IP地址的分类 A类IP地址 B类IP地址 C类IP地址 6.4.3 子网及子网掩码 6.4.4 域名及域名服务 计算机应用基础课件——网络基础知识全文共53页,当前为

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧