2.2. Д и н а м и ч е с к и о т к р ы т ь с о к е т
2.2. Д и н а м и ч е с к и о т к р ы т ь с о к е т
mov dx,5555h — произвольный номер (ограничения на номера сокетов см. прил. 1)
mov bx,0000h
mov al,00h
int 7Ah — номер прерывания
если после прерывания в ах записан ноль, то сокет открыт.
2.3. З а к р ы т ь с о к е т
mov dx,5555h
mov bx,0001h
int 7Ah
and ax,00ffh
2.4. О т п р а в к а п а к е т а
Инициализация для отправки
ECB. ESRAddress=0;
ECB. Socket=0×5555; // выбрали сокет с номером 5555
ECB. FragmentCnt=1;
ECB. Address=&IPX;
ECB. Size=sizeof (IPX);
IPX. PacketType=4;
IPX. DestNetwork=0;
IPX. DestSocket=0×5555;
Непосредственная отправка
for (i=0;i<6;i++) { //передача всем станциям сети (broadcast)
ECB. ImmAddress[i]=0xff;
IPX. DestNode[i]=0xff; }
inregs. x.bx=0×0003;
segregs. es=_DS;
inregs. x.si=(unsigned)&ECB;
int86x (0x7a,&inregs,&outregs,&segregs);
if ((ECB. CCode==0)&&(ECB. InUse==0)) return 1;
else return 0; }
Пояснения значения полей IPX и ECB находятся в пункте 1.3.3.
2.5. П р и е м п а к е т а
Инициализация для приема
ECB. FragmentCnt=1;
ECB. ESRAddress=0;
ECB. Socket=0×5555;
ECB. Address=&IPX;
ECB. Size=sizeof (IPX);
Оставить комментарий