Показать полную графическую версию : AutoIt и Jabber
morgan1991
27-07-2010, 21:56
Здравствуйте!
Вот возникла такая проблема, никак не могу понять принцип работы с сервером Jabber.
Возьмём например сервер vk.com.
Настроил свой qip следующим образом, логин - test@my_ip, пароль - test.
Qip отправил следующюю строку:
<?xml version='1.0' encoding='UTF-8'?><stream:stream to='my_ip' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' xml:lang='ru' version='1.0'>
И судя по всему ждал какогото ответа от сервера. Я попробовал отправить на vk.com тоже самое, но в ответ ничего не получил.
Отправлял строку следующим образом:
TCPStartup (http://www.autoitscript.com/autoit3/docs/functions/TCPStartup.htm)()
$server = "vk.com"
$Port = "5222"
$jid = "login"
$jidpass = "pass"
$socket = TCPConnect (http://www.autoitscript.com/autoit3/docs/functions/TCPConnect.htm)(TCPNameToIP (http://www.autoitscript.com/autoit3/docs/functions/TCPNameToIP.htm)($server), $Port)
If (http://www.autoitscript.com/autoit3/docs/keywords.htm#If) $socket = -1 Then (http://www.autoitscript.com/autoit3/docs/keywords.htm#Then) Exit (http://www.autoitscript.com/autoit3/docs/keywords.htm#Exit)
; look for client connection
;--------------------
$data = "<?xml version='1.0' encoding='UTF-8'?><stream:stream to='" & $server & "' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' xml:lang='ru' version='1.0'>"
TCPSend (http://www.autoitscript.com/autoit3/docs/functions/TCPSend.htm)($socket, $data)
While (http://www.autoitscript.com/autoit3/docs/keywords.htm#While) 1
$recv = TCPRecv (http://www.autoitscript.com/autoit3/docs/functions/TCPRecv.htm)($socket, 4098)
If (http://www.autoitscript.com/autoit3/docs/keywords.htm#If) $recv <> "" Then (http://www.autoitscript.com/autoit3/docs/keywords.htm#Then) ConsoleWrite (http://www.autoitscript.com/autoit3/docs/functions/ConsoleWrite.htm)($recv)
WEnd (http://www.autoitscript.com/autoit3/docs/keywords.htm#WEnd)
Помогите пожалуйста, в чём моя ошибка?
Может это тебе поможет
JAdmin v2.0 + Plugins! (http://autoit-script.ru/index.php?topic=2257.0)
morgan1991
27-07-2010, 23:42
kaster, я его уже качал, но ничего не понял...
Хотяб на словах, кто знает, скажите в чём косяк?
Хотяб на словах, кто знает, скажите в чём косяк? »
Вот простенько, думаю сам разберешся что к чему, проверял на своему аккаунте, у меня на jabber.ru, как видно из примера - авторизация и получение сообщений работает, думаю ты это хотел узнать для начала:
TCPStartup()
;прикинем, что наш ак на jabber такой: login@jabber.ru, тогда
$jidname="login"
$server = "jabber.ru"
$jidpass = "пароль"
$Port = "5222"
_JabHello($server)
_JabAuth($jidname, $jidpass, "jjjjjjj")
While 1
$recv = TCPRecv($socket, 2048)
If $recv <> "" Then ConsoleWrite($recv&@LF)
Sleep(30)
WEnd
Func _JabHello($JabServ)
Global $socket = TCPConnect(TCPNameToIP($JabServ), $Port)
If $socket = -1 Then Exit
;A typical user authentication process
TCPSend($socket, "<?xml version='1.0' encoding='UTF-8' ?><stream:stream to='" & $JabServ & "' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'>")
$recd = TCPRecv($socket, 2048)
ConsoleWrite( "Ответ_на_JabHello_________________ "&$recd& @LF)
EndFunc ;_JabHello()
;We ask the server about the authentication methods available for our specific user:
Func _JabAuth($JabUser, $JabPass, $JabRes)
TCPSend($socket, "<iq type='get' to='" & $server & "' id='auth1'><query xmlns='jabber:iq:auth'><username>" & $JabUser & "</username></query></iq>")
$recd = TCPRecv($socket, 2048)
ConsoleWrite("Ответ_на_Запрос_JabAuth______________ "& $recd& @LF)
TCPSend($socket, "<iq type='set' id='auth2'><query xmlns='jabber:iq:auth'><username>" & $JabUser & "</username><password>" & $JabPass & "</password><resource>" & $JabRes & "</resource></query></iq><presence type='available'></presence>")
EndFunc ;_JabAuth()
morgan1991
28-07-2010, 23:52
$jidname="login" $server = "jabber.ru" $jidpass = "пароль" $Port = "5222" »
С такими настройками возвращает:
Ответ_на_JabHello_________________
Ответ_на_Запрос_JabAuth______________
<?xml version='1.0'?><stream:stream xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' id='2764011537' from='jabber.ru' xml:lang='ru'>
<iq type='result' from='jabber.ru' id='auth1'><query xmlns='jabber:iq:auth'><username>login</username><password/><digest/><resource/></query></iq><stream:error><xml-not-well-formed xmlns='urn:ietf:params:xml:ns:xmpp-streams'/></stream:error></stream:stream>
А если ставлю сервер vk.com, тогда в консоль вообще ничего не выводится...
+ пришлось объявить переменную $socket до функций, т.к. выдавало ошибку.
TCPStartup (http://www.autoitscript.com/autoit3/docs/functions/TCPStartup.htm)()
;прикинем, что наш ак на jabber такой: login@jabber.ru, тогда
Global (http://www.autoitscript.com/autoit3/docs/keywords.htm#Global) $socket
$jidname="login"
$server = "jabber.ru"
$jidpass = "пароль"
$Port = "5222"
_JabHello($server)
_JabAuth($jidname, $jidpass, "jjjjjjj")
While (http://www.autoitscript.com/autoit3/docs/keywords.htm#While) 1
$recv = TCPRecv (http://www.autoitscript.com/autoit3/docs/functions/TCPRecv.htm)($socket, 2048)
If (http://www.autoitscript.com/autoit3/docs/keywords.htm#If) $recv <> "" Then (http://www.autoitscript.com/autoit3/docs/keywords.htm#Then) ConsoleWrite (http://www.autoitscript.com/autoit3/docs/functions/ConsoleWrite.htm)($recv&@LF (http://www.autoitscript.com/autoit3/docs/macros.htm#@LF))
Sleep (http://www.autoitscript.com/autoit3/docs/functions/Sleep.htm)(30)
WEnd (http://www.autoitscript.com/autoit3/docs/keywords.htm#WEnd)
Func (http://www.autoitscript.com/autoit3/docs/keywords.htm#Func) _JabHello($JabServ)
$socket = TCPConnect (http://www.autoitscript.com/autoit3/docs/functions/TCPConnect.htm)(TCPNameToIP (http://www.autoitscript.com/autoit3/docs/functions/TCPNameToIP.htm)($JabServ), $Port)
If (http://www.autoitscript.com/autoit3/docs/keywords.htm#If) $socket = -1 Then (http://www.autoitscript.com/autoit3/docs/keywords.htm#Then) Exit (http://www.autoitscript.com/autoit3/docs/keywords.htm#Exit)
;A typical user authentication process
TCPSend (http://www.autoitscript.com/autoit3/docs/functions/TCPSend.htm)($socket, "<?xml version='1.0' encoding='UTF-8' ?><stream:stream to='" & $JabServ & "' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'>")
$recd = TCPRecv (http://www.autoitscript.com/autoit3/docs/functions/TCPRecv.htm)($socket, 2048)
ConsoleWrite (http://www.autoitscript.com/autoit3/docs/functions/ConsoleWrite.htm)("Ответ_на_JabHello_________________ "&$recd& @LF (http://www.autoitscript.com/autoit3/docs/macros.htm#@LF))
EndFunc (http://www.autoitscript.com/autoit3/docs/keywords.htm#EndFunc) ;_JabHello()
;We ask the server about the authentication methods available for our specific user:
Func (http://www.autoitscript.com/autoit3/docs/keywords.htm#Func) _JabAuth($JabUser, $JabPass, $JabRes)
TCPSend (http://www.autoitscript.com/autoit3/docs/functions/TCPSend.htm)($socket, "<iq type='get' to='" & $server & "' id='auth1'><query xmlns='jabber:iq:auth'><username>" & $JabUser & "</username></query></iq>")
$recd = TCPRecv (http://www.autoitscript.com/autoit3/docs/functions/TCPRecv.htm)($socket, 2048)
ConsoleWrite (http://www.autoitscript.com/autoit3/docs/functions/ConsoleWrite.htm)("Ответ_на_Запрос_JabAuth______________ "& $recd& @LF (http://www.autoitscript.com/autoit3/docs/macros.htm#@LF))
TCPSend (http://www.autoitscript.com/autoit3/docs/functions/TCPSend.htm)($socket, "<iq type='set' id='auth2'><query xmlns='jabber:iq:auth'><username>" & $JabUser & "</username><password>" & $JabPass & "</password><resource>" & $JabRes & "</resource></query></iq><presence type='available'></presence>")
EndFunc (http://www.autoitscript.com/autoit3/docs/keywords.htm#EndFunc) ;_JabAuth()
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.