![]() |
|
||||||||||
|
|||||
|
Регистрация: Jun 2007
Сообщений: 16
|
Вот решил в качестве тренировки написать Pop3 чекер... Но проблема в том, что у меня не получается отправлять запросы через сокет
Когда создаю сокет соединяется нормально и с сервера возвращается ответ, но когда пытаюсь записать что-нибудь в сокет Нифига не работает... Помогите пожалуйста. <?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
width="420" height="600"
creationComplete="creationCompleteHandler();">
<mx:Script>
<![CDATA[
import mx.messaging.channels.StreamingAMFChannel;
private var socket:Socket;
private var host:String = "ua.fm";
private var port:int = 110;
private var command:String = "connection"; // Команда, которая бысла послана серверу.
private function creationCompleteHandler():void{
trace("Creation complete!");
socket = new Socket();
socket.addEventListener(ProgressEvent.SOCKET_DATA, socketDataHandler);
socket.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
socket.connect(host, port);
}
private function ioErrorHandler(event:IOErrorEvent):void{
trace("IO error");
trace(event.toString());
}
// Обработка данный полученных с сервера.
// Функция читает строку/ответ с сервера и если ответ положительный,
// то передает на обработку
private function socketDataHandler(event:ProgressEvent):void{
var resultString:String = socket.readUTFBytes(socket.bytesAvailable);
if(resultString.charAt(0) == "+")
handlePop3Responce(resultString);
else{
trace("Ответ отрицательный!");
trace(resultString);
}
}
//Функция обрабатывающая ответ сервера.
// Смотрим какая была послана команда и обрабатываем ответ
private function handlePop3Responce(result:String):void{
trace("handlePop3Responce");
trace(result);
switch (command){
case "connection": // Соединение только устанавливается.
//Теперь надо послать имя пользователя.
trace("Посылаем user");
command = "user";
socket.writeUTFBytes("USER " + "ssss");
socket.flush();
trace("послано");
break;
case "user": // Получили ответ что логин принят
//посылаем пароль
command = "pass"
socket.writeUTF("PASS " + "ssss");
socket.flush();
}
}
]]>
</mx:Script>
</mx:WindowedApplication>
|
|
|||||
|
ветеран форума
|
На каком этапе не работает? Данные на сервер не отправляются? Поставьте сниффер типа WireShark и посмотрите, уходят ли на сервер данные.
__________________
4am is time to rock |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Если я не ошибаюсь, после каждой строки надо writeByte(0).
|
|
|||||
|
Регистрация: Jun 2007
Сообщений: 16
|
Поставил WireShark и попробовал все выполнить через telnet, выяснилось что все команды должны заканчиваться на \r\n . Так что конструкция должна была выглядеть так
writeByte(0) ставить не пришлось. Всем спасибо. |
![]() |
![]() |
Часовой пояс GMT +4, время: 11:16. |
|
|
« Предыдущая тема | Следующая тема » |
|
|