关于IPX编程! 我想使用ipx进行局域网通信,请问那位大虾能给点例子,非常感谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1、使用winsock2.h和wsnwlink.h2、增加以下的定义(novell提供)3、SOCKADDR_IPX SPXlocalAddr; socket(AF_IPX,SOCK_STREAM,NSPROTO_SPX); SPXlocalAddr.sa_family=AF_IPX; SPXlocalAddr.sa_socket=htons((WORD)listenPort); err=bind(Handle,(struct sockaddr *)&SPXlocalAddr,sizeof(SPXlocalAddr)); 其他操作与TCP一样//novell定义typedef struct sockaddr_ipx { u_short sa_family; u_char sa_netnum[4]; u_char sa_nodenum[6]; unsigned short sa_socket;} SOCKADDR_IPX, *PSOCKADDR_IPX, FAR *LPSOCKADDR_IPX;#define NSPROTO_UNSPEC 0#define NSPROTO_IPX 1000#define NSPROTO_SPX 1256#define NSPROTO_SPXII 1257#define IPX_CATEGORY NSPROTO_IPX#define IPX_CHECKSUM 0x0001#define IPX_PRIMARY 0x0002#define IPX_TXPKTSIZE 0x1001#define IPX_RXPKTSIZE 0x1002#define IPX_TXMEDIASIZE 0x1003#define IPX_RXMEDIASIZE 0x1004#define SPX_CATEGORY NSPROTO_SPX#define SPX_CHECKSUM IPX_CHECKSUM#define SPX_PRIMARY IPX_PRIMARY#define SPX_RAWSPX 0x0010#define SPX_TXPKTSIZE IPX_TXPKTSIZE#define SPX_RXPKTSIZE IPX_RXPKTSIZE#define SPX_TXMEDIASIZE IPX_TXMEDIASIZE#define SPX_RXMEDIASIZE IPX_RXMEDIASIZE#define IPX_NET_SIZE 4#define IPX_NODE_SIZE 6#define IPX_SOCKET_SIZE 2typedef struct WSIpxAddrStruc{ u_long Net; u_char Node[IPX_NODE_SIZE]; u_short Socket;} WSIpxAddr,*PWSIpxAddr,FAR *LPWSIpxAddr;#define WSIpxNode0To3(pIpxAddr) (*(UINT32*)(&((PWSIpxAddr*)pIpxAddr)->Node[0])#define WSIpxNode4To5(pIpxAddr) (*(UINT16*)(&((PWSIpxAddr*)pIpxAddr)->Node[3])typedef struct WSIpxHeaderStruc{ u_short Checksum; // 0x00 u_short Length; // 0x02 u_char XportCtl; // 0x04 u_char PktType; // 0x05 WSIpxAddr DestAddr; // 0x06 WSIpxAddr SrcAddr; // 0x12} WSIpxHeader, *PWSIpxHeader,FAR *LPWSIpxHeader; // 0x1E total length/* Standard IPX packet types */#define IPXTYPE_UNKNOWN 0x00#define IPXTYPE_RIP 0x01#define IPXTYPE_ECHO 0x02#define IPXTYPE_ERROR 0x03#define IPXTYPE_IPX 0x04#define IPXTYPE_SPX 0x05#define IPXTYPE_NCP 0x11#define IPXTYPE_NETBIOS 0x14#define IPXTYPE_INTERNET_BROADCAST IPT_NETBIOS/* WSSpxHeader -- SPX Header structure when in SPXL_SPXRAW mode. */typedef struct WSSpxHeaderStruc{ WSIpxHeader IpxHdr; // 0x00 u_char ConnCtrl; // 0x1E u_char DataStreamType; // 0x1F u_short SrcConnId; // 0x20 u_short DstConnId; // 0x22 u_short SendSeq; // 0x24 u_short AckSeq; // 0x26 u_short AllocNum; // 0x28} WSSpxHeader, *PWSSpxHeader,FAR *LPWSSpxHeader; // 0x2A (42) size/* Connection Control Bits */#define SPX_SYSTEM_PACKET_BIT 0x80#define SPX_SEND_ACK_BIT 0x40#define SPX_ATTENTION_BIT 0x20#define SPX_END_OF_MESSAGE_BIT 0x10/* Data Stream Types. * * Values in the range 0 - 0xfd are user-definable. */#define SPX_HANG_UP 0xFE#define SPX_HANG_UP_ACK 0xFF/* a sampling of well-known socket types in network hi-lo order. * use ntohl() for local representation. */#define IPXSKT_DYNAMIC 0x0000#define IPXSKT_NCP 0x5104#define IPXSKT_SAP 0x5204#define IPXSKT_RIP 0x5304#define IPXSKT_NETBIOS 0x5504#define IPXSKT_DIAGNOSTICS 0x5604#define IPXSKT_PING 0x8690 我以前写过支持IPX/SPX的类我给你找找 http://www.csdn.net/Develop/Read_Article.asp?Id=11665这是我以前POST到CSDN的给你参考参考吧, 变量的定义与使用 程序错在哪里,高手指教! 最上层显示窗口 如何将CRichEdit控件背景设置为透明? 在线等(急) 数据发送错位!!! 问个简单的字符转换问题,请高手回答. 请问如何用Rectangle画空心的矩形? 如何使LISTCTRL每一列各项都可以选择,我用的是REPORT模式? 关于关闭进程 大侠们,狂入!!关于数据集 用VC写的ActiveX控件,在Dephi中调用时的奇怪现象 一个勤奋初学者的问题:如何初始化一个已存在的窗体?
2、增加以下的定义(novell提供)
3、SOCKADDR_IPX SPXlocalAddr;
socket(AF_IPX,SOCK_STREAM,NSPROTO_SPX);
SPXlocalAddr.sa_family=AF_IPX;
SPXlocalAddr.sa_socket=htons((WORD)listenPort);
err=bind(Handle,(struct sockaddr *)&SPXlocalAddr,sizeof(SPXlocalAddr));
其他操作与TCP一样
//novell定义
typedef struct sockaddr_ipx {
u_short sa_family;
u_char sa_netnum[4];
u_char sa_nodenum[6];
unsigned short sa_socket;} SOCKADDR_IPX, *PSOCKADDR_IPX, FAR *LPSOCKADDR_IPX;#define NSPROTO_UNSPEC 0
#define NSPROTO_IPX 1000
#define NSPROTO_SPX 1256
#define NSPROTO_SPXII 1257#define IPX_CATEGORY NSPROTO_IPX#define IPX_CHECKSUM 0x0001
#define IPX_PRIMARY 0x0002
#define IPX_TXPKTSIZE 0x1001
#define IPX_RXPKTSIZE 0x1002
#define IPX_TXMEDIASIZE 0x1003
#define IPX_RXMEDIASIZE 0x1004#define SPX_CATEGORY NSPROTO_SPX#define SPX_CHECKSUM IPX_CHECKSUM
#define SPX_PRIMARY IPX_PRIMARY
#define SPX_RAWSPX 0x0010
#define SPX_TXPKTSIZE IPX_TXPKTSIZE
#define SPX_RXPKTSIZE IPX_RXPKTSIZE
#define SPX_TXMEDIASIZE IPX_TXMEDIASIZE
#define SPX_RXMEDIASIZE IPX_RXMEDIASIZE#define IPX_NET_SIZE 4
#define IPX_NODE_SIZE 6
#define IPX_SOCKET_SIZE 2typedef struct WSIpxAddrStruc
{
u_long Net;
u_char Node[IPX_NODE_SIZE];
u_short Socket;} WSIpxAddr,*PWSIpxAddr,FAR *LPWSIpxAddr;#define WSIpxNode0To3(pIpxAddr) (*(UINT32*)(&((PWSIpxAddr*)pIpxAddr)->Node[0])
#define WSIpxNode4To5(pIpxAddr) (*(UINT16*)(&((PWSIpxAddr*)pIpxAddr)->Node[3])typedef struct WSIpxHeaderStruc
{
u_short Checksum; // 0x00
u_short Length; // 0x02
u_char XportCtl; // 0x04
u_char PktType; // 0x05
WSIpxAddr DestAddr; // 0x06
WSIpxAddr SrcAddr; // 0x12
} WSIpxHeader, *PWSIpxHeader,FAR *LPWSIpxHeader; // 0x1E total length/* Standard IPX packet types */#define IPXTYPE_UNKNOWN 0x00
#define IPXTYPE_RIP 0x01
#define IPXTYPE_ECHO 0x02
#define IPXTYPE_ERROR 0x03
#define IPXTYPE_IPX 0x04
#define IPXTYPE_SPX 0x05
#define IPXTYPE_NCP 0x11
#define IPXTYPE_NETBIOS 0x14
#define IPXTYPE_INTERNET_BROADCAST IPT_NETBIOS/* WSSpxHeader -- SPX Header structure when in SPXL_SPXRAW mode. */typedef struct WSSpxHeaderStruc
{
WSIpxHeader IpxHdr; // 0x00
u_char ConnCtrl; // 0x1E
u_char DataStreamType; // 0x1F
u_short SrcConnId; // 0x20
u_short DstConnId; // 0x22
u_short SendSeq; // 0x24
u_short AckSeq; // 0x26
u_short AllocNum; // 0x28
} WSSpxHeader, *PWSSpxHeader,FAR *LPWSSpxHeader; // 0x2A (42) size/* Connection Control Bits */#define SPX_SYSTEM_PACKET_BIT 0x80
#define SPX_SEND_ACK_BIT 0x40
#define SPX_ATTENTION_BIT 0x20
#define SPX_END_OF_MESSAGE_BIT 0x10/* Data Stream Types.
*
* Values in the range 0 - 0xfd are user-definable.
*/#define SPX_HANG_UP 0xFE
#define SPX_HANG_UP_ACK 0xFF
/* a sampling of well-known socket types in network hi-lo order.
* use ntohl() for local representation.
*/#define IPXSKT_DYNAMIC 0x0000
#define IPXSKT_NCP 0x5104
#define IPXSKT_SAP 0x5204
#define IPXSKT_RIP 0x5304
#define IPXSKT_NETBIOS 0x5504
#define IPXSKT_DIAGNOSTICS 0x5604
#define IPXSKT_PING 0x8690
给你参考参考吧,