Nu vet inte så mycket om webbaserat ICQ, men jag inbillar mig att den funkar precis som en webläsare? Eller är det nån applet inblandad?
Nästa sak som jag inte riktigt förstår: Du letar väl inte exakt bokstavligen efter paket som ser ut som det du kopierade in? Finns det några nyckelord som avgör om ett paket signalerar ett ICQ-meddelande?
Men i grova drag kan jag ge dig ett förslag:
1. Det finns en funktion i koden som heter display2 som alla paket hamnar i. Här kan du börja med att filtrera bort alla paket du garanterat inte är intresserad av.
Typ:
if ip_header.ip_protocol <> 6 then exit sub 'Fel protokoll, inte TCP.
if ntohs(tcp_header.src_portno)<>80 then exit sub ' Fel port.
if getascip(ip_header.ip_srcaddr)<>"XXX.XXX.XXX" then exit sub ' Det kom från fel IP.
' osv ..
2. Nästa grej är att kolla vad som finns inne i de enskilda bytesen i paketet:
for i=0 to 1493
if Asc(readbuffer(i))="M" and Asc(readbuffer(i+1))="U" ' osv ..
' Vi hittade "MUUUUH!" exekvera kod!
exit for
end if
next
3. Eftersom du loopar igenom alla paket över port 80 så kommer det här att suga processor. Du bör alltså peta bort all kod du inte behöver, vad gäller presentation i listvyer osv.
När allt sen funkar bör du ändra projektinställningarna och ta bort bound- och overflow-checkningar vid kompileringen för att få upp farten.
Som sagt bara ett förslag. Finns kanske mycket bättre lösningar i ditt fall.
ne, grejen är såhär:
på mitt företag har man spärrat användamdet av icq....men den webbaserade går ju att köra...men meddelandet ploppar upp på skärmen när man vill eller inte vill...eller så finns det en inställning som gör att meddelandet inte alls visas utan man måste kolla förstret lite nu och då om man fått nåt meddelande.
Det enda jag vill göra är en applikation som visar en ikon vid klockan som blinkar så fort man får ett meddelande, precis som vanliga icq.
Den här koden sätter ditt kort i sk "promisquous" mode vilket innebär att du har möjlighet att snappa upp all port-80-trafik. Om det finns IT-kunniga människor på företaget så kan de ev. se att ditt kort är ställt i detta mode och du kan råka illa ut. Stor varning alltså!
För ditt eget samvetes skull bör du isåf lägga till:
if getascip(ip_header.ip_dstaddr)<>"dinip" then exit sub 'Oops! Det var inte till mig.
Är lite osäker, men jag tror du också bör(?) ta bort den här koden från ConnectSock:
ret = WSAIoctl(s, SIO_RCVALL, lngInBuffer, Len(lngInBuffer), _
lngOutBuffer, Len(lngOutBuffer), lngBytesReturned, ByVal 0, ByVal 0)
If ret <> 0 Then
If s > 0 Then Dummy = closesocket(s)
MsgBox "WSAIoctl failed"
Exit Function
End If
Du kommer ändå inte att lyckas sätta kortet i P-mode om du inte är påloggad som administrator.
263 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e