Проблема в следующем:
Не работает обмен по нескольким каналам.
По одному каналу работает нормально но при попытке обмена по несколькиим каналам начинает неправильно считатся длина принятого сообщения.
subver
Jul 25 2006, 02:16
Цитата(Swed @ Jul 24 2006, 22:24)

Проблема в следующем:
Не работает обмен по нескольким каналам.
По одному каналу работает нормально но при попытке обмена по несколькиим каналам начинает неправильно считатся длина принятого сообщения.
Хм. код в студию?
У меня нормально все.
Процедура приема:
TCP_Resive proc far
TCPRC_Socket = word ptr [bp + 6]
TCPRC_AdrBuf = dword ptr [bp + 8]
TCPRC_LenBuf = word ptr [bp + 12]
TCPRC_AdrRd = dword ptr [bp - 4]
TCPRC_LenRd = word ptr [bp - 6]
enter 4 + 2, 0
push ds es
pushad ; bx cx dx edi esi
mov bx, TCPRC_Socket
shl bx, 1
mov TCPRC_LenRd, 0
mov dx, cs:TCP_TblReg_SRW_PR[bx]
in al, dx
push cx
mov cx, 5
loop $
pop cx
mov dx, cs:TCP_TblReg_RW_PR[bx]
in ax, dx
xchg ah, al
mov si, ax
shl esi, 16
add dx, 2
in ax, dx
xchg ah, al
mov si, ax
mov dx, cs:TCP_TblReg_SRR_PR[bx]
in al, dx
push cx
mov cx, 5
loop $
pop cx
mov dx, cs:TCP_TblReg_RR_PR[bx]
in ax, dx
xchg ah, al
mov di, ax
shl edi, 16
add dx, 2
in ax, dx
xchg ah, al
mov di, ax
mov ss:[110h], esi
mov ss:[114h], edi
mov TCPRC_AdrRd, edi
cmp esi, edi
jae TRc_Sub
add edi, 800h ; 2Ÿ
sub edi, esi
mov esi, edi
jmp TRc_Read
TRc_Sub:
sub esi, edi
TRc_Read:
or si, si
jz TCPRC_Ret
cmp si, TCPRC_LenBuf
jb TCPRC_Ret
mov cx, si
mov TCPRC_LenRd, si
les di, TCPRC_AdrBuf
mov ax, word ptr TCPRC_AdrRd
TRc_Rd:
mov dx, ax
and dx, 07FFh
add dx, cs:TCP_TblReg_RcBufAdr[bx]
insb
inc ax
loop TRc_Rd
add esi, TCPRC_AdrRd
mov ax, si
xchg ah, al
mov dx, cs:TCP_TblReg_RR_PR[bx]
add dx, 2
out dx, ax
shr esi, 16
mov ax, si
xchg ah, al
sub dx, 2
out dx, ax
TCPRC_Ret:
popad
mov ax, TCPRC_LenRd
;pop esi edi dx cx bx
pop es ds
leave
ret 2 + 4 + 2
TCP_Resive endp
В обработке прерывания стоит вызов функции которая принимает сообщение и транслиркет его обратно.
Используя утилиту AX1 тесирую прием и передачу. При включении второго канала начинаются траблы.