⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 spx.h

📁 IPX协议C程序源代码:用于网络通信
💻 H
字号:
#define byte unsigned char
#define word unsigned int

struct  SPXECB					//ECB结构定义
{
 void far       *link_address;
 void far       (*event_service_routine)(void);
 unsigned char  in_use;
 unsigned char  completion_code;
 unsigned int   socket_number;
 unsigned char  connection_id;
 unsigned char  reserved;
 unsigned char  driver_workspace [12];
 unsigned char  immediate_address[ 6];
 unsigned int   packet_count;
 struct {
	void far   *address;
	unsigned int length;
	} packet [2];
 };

struct SPXHEADER				//SPX分组头定义
{
 unsigned int   checksum;
 unsigned char  length[2];
 unsigned char  transport_control;
 unsigned char  packet_type;
 unsigned char  dest_network_number [4];
 unsigned char  dest_network_node   [6];
 unsigned int   dest_network_socket;
 unsigned char  source_network_number [4];
 unsigned char  source_network_node   [6];
 unsigned int   source_network_socket;
 unsigned char	connection_control;
 unsigned char	datasream_type;
 unsigned int	source_connection_id;
 unsigned int	dest_connection_id;
 unsigned int	sequence_number;
 unsigned int	acknowledge_number;
 unsigned int	allocation_number;
 };

struct STABUF
 {
 byte connect_status;
 byte watchdog;
 word local_connect_id; 
 word remote_connect_id;
 word sequence_num;
 word local_acknowledge_num;
 word loacl_allocation_num;
 word remote_acknowledge_num;
 word remote_allocation_num;
 byte local_socket[2];
 byte immediate_address[6];
 byte remote_network[4];
 byte remote_node[6];
 byte remote_socket[2];
 word retransmit_count;
 word est_roundtrip_time;
 word retransmit_packets;
 word suppressed_packets;
 };

 void spx_listen_for_sequenced_packet(struct SPXECB *ecb_ptr)
	{
	_ES=FP_SEG((void far *)ecb_ptr);
	_SI=FP_OFF((void far *)ecb_ptr);
	_BX=0x0017;
	ipx_spx();
	}

 void spx_listen_for_connection(struct SPXECB *ecb_ptr)
	{
	_ES=FP_SEG((void far *)ecb_ptr);
	_SI=FP_OFF((void far *)ecb_ptr);
	_BX=0x0012;
	_AH=1;
	_AL=0xff;
	ipx_spx();
	}

 void spx_establish_connection(struct SPXECB *ecb_ptr)
	{
	_ES=FP_SEG((void far *)ecb_ptr);
	_SI=FP_OFF((void far *)ecb_ptr);
	_BX=0x0011;
	_AH=1;
	_AL=0xff;
	ipx_spx();
	}

 void spx_send_sequenced_packet(struct SPXECB *ecb_ptr,
			        unsigned int connection_id)
	{
	_ES=FP_SEG((void far *)ecb_ptr);
	_SI=FP_OFF((void far *)ecb_ptr);
	_DX=connection_id;
	_BX=0x0016;
	ipx_spx();
	}

 void spx_terminate_connection(struct SPXECB *ecb_ptr,
			       unsigned int connection_id)
	{
	_ES=FP_SEG((void far *)ecb_ptr);
	_SI=FP_OFF((void far *)ecb_ptr);
	_DX=connection_id;
	_BX=0x0013;
	ipx_spx();
	}

 void spx_get_connection_status(struct STABUF *reply_buffer,
			        unsigned int connection_id)
	{
	_ES=FP_SEG((void far *)reply_buffer);
	_SI=FP_OFF((void far *)reply_buffer);
	_DX=connection_id;
	_BX=0x0015;
	ipx_spx();
	}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -