?? ipxrec.c
字號:
#include <stdio.h>
#include <stdlib.h>
#include <mem.h>
#include <string.h>
#include <dos.h>
#include "ipx.h"
#define our_socket 0x5353
#define your_socket 0x4343
#define tot_ecb 5
#define max_message 100
volatile int event_completed_flag;
void far receive_esr(void)
{
_AX=_ES;
_DS=_AX;
event_completed_flag=1;
}
int receive(void *packet_ptr,int *packet_len)
{
unsigned int old_time;
struct IPXECB receive_ecb;
struct IPXHEADER receive_header;
int i,j;
event_completed_flag=0;
memset(&receive_ecb,0,sizeof(struct IPXECB));
memset(&receive_header,0,sizeof(struct IPXHEADER));
open_socket(our_socket);
receive_ecb.socket_number=our_socket;
receive_ecb.packet_count=2;
receive_ecb.event_service_routine=receive_esr;
receive_ecb.packet[0].address=&receive_header;
receive_ecb.packet[0].length=sizeof(struct IPXHEADER);
receive_ecb.packet[1].address=packet_ptr;
receive_ecb.packet[1].length=*packet_len;
ipx_listen_for_packet(&receive_ecb);
old_time=get_interval_marker();
while(!event_completed_flag)
{
if get_interval_marker()>=18.2*60)
{
close(our_socket);
return 0;
}
}
close(our_socket);
return 1;
}
main()
{
int i,j,message_len,*message_num;
char send_message[max_message];
i=ipx_spx_installed();
if (i<0)
{
printf("!!IPX is not loaded, please load IPX first.\n")
return;
}
message_len=max_message;
*message_num=0;
printf("Waiting for your message...\n\n");
while(1)
{
memset(receive_nessage,0.max_message)
i=receive(receive_message,message_len);
(*message_num)++;
if (i==1)
print("Message %d received:%s\n",*message_num,receive_message);
else
{
printf("\n*****************************************************\n");
printf(" I have been waiting for message longer than 1 minute!\n");
printf(" I am tired. Now,I have to say good_bye to you!\n");
printf("\n*****************************************************\n");
return;
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -