Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Flash Приложения: AIR, Zinc и тд.

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 06.09.2009, 14:11
ZpiRit вне форума Посмотреть профиль Отправить личное сообщение для ZpiRit Найти все сообщения от ZpiRit
  № 1  
Ответить с цитированием
ZpiRit

Регистрация: Jun 2007
Сообщений: 16
По умолчанию Pop3 Клиент

Вот решил в качестве тренировки написать Pop3 чекер... Но проблема в том, что у меня не получается отправлять запросы через сокет
Когда создаю сокет
Код:
socket = new Socket(); 
socket.connect(host, port);
соединяется нормально и с сервера возвращается ответ, но когда пытаюсь записать что-нибудь в сокет
Код:
socket.writeUTFBytes("USER " + "sss"); 
socket.flush();
Нифига не работает... Помогите пожалуйста.

Код:
<?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>

Старый 06.09.2009, 14:37
DarkLight вне форума Посмотреть профиль Отправить личное сообщение для DarkLight Посетить домашнюю страницу DarkLight Найти все сообщения от DarkLight
  № 2  
Ответить с цитированием
DarkLight
ветеран форума
 
Аватар для DarkLight

Регистрация: May 2006
Адрес: Москва
Сообщений: 2,978
Отправить сообщение для DarkLight с помощью ICQ Отправить сообщение для DarkLight с помощью Skype™
На каком этапе не работает? Данные на сервер не отправляются? Поставьте сниффер типа WireShark и посмотрите, уходят ли на сервер данные.
__________________
4am is time to rock

Старый 06.09.2009, 15:06
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 3  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Если я не ошибаюсь, после каждой строки надо writeByte(0).

Старый 06.09.2009, 16:01
ZpiRit вне форума Посмотреть профиль Отправить личное сообщение для ZpiRit Найти все сообщения от ZpiRit
  № 4  
Ответить с цитированием
ZpiRit

Регистрация: Jun 2007
Сообщений: 16
Поставил WireShark и попробовал все выполнить через telnet, выяснилось что все команды должны заканчиваться на \r\n . Так что конструкция должна была выглядеть так
Код:
socket.writeUTFBytes("USER " + "sss\r\n"); 
socket.flush();
writeByte(0) ставить не пришлось.

Всем спасибо.

Создать новую тему Ответ Часовой пояс GMT +4, время: 11:16.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 11:16.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.