2.2. Д и н а м и ч е с к и о т к р ы т ь с о к е т

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);

Связанные записи

Оставить комментарий

Это не спам.
сделано dimoning.ru