Kultura
							
								Помогающий 
								
								 
								  Offline
								
								
								
								
							 
						 | 
						
							
								  | 
								
									
									 «  : 06-09-2009 18:04 »   | 
								
								 | 
							  
							 
							Пробую сделать простенький почтовый клиент. Система win XP, msvs c++ 2008. При подключении к серверу выскакивает исключение "удаленный хост принудительно разорвал подключение" Вот мой код: String ^	ssTemp = nullptr;	 TcpClient	^ server = nullptr; NetworkStream ^	netStrm = nullptr; StreamReader ^	rdStrm = nullptr;
  server = gcnew TcpClient ("pop.gmail.com", 995);					 netStrm = server->GetStream (); rdStrm = gcnew StreamReader (netStrm); 				 String ^ ssData = "USER " + "myusername@gmail.com" + "\r\n"; cli::array<unsigned char> ^ clicData = System::Text::Encoding::ASCII->GetBytes (ssData->ToCharArray ()); netStrm->Write (clicData, 0, clicData->Length); ssTemp = rdStrm->ReadLine ();
  Как раз на последней строчке при попытке ReadLine (ssTemp = rdStrm->ReadLine ( ); ) и выскакивает исключение. Помогите, пожалуйста, разобраться, в чем тут дело. Почтовый ящик существует, POP3 в нем включен, настройки перепроверял ("pop.gmail.com", 995)     
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
									« Последнее редактирование: 06-09-2009 18:10 от Kultura »
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							Finch
							
								Спокойный 
								Администратор
								
								 
								  Offline
								Пол:   
								
								Пролетал мимо
								
								
								
								
								
							  
						 | 
						
							
								  | 
								
									
									 « Ответ #1 : 06-09-2009 18:50 »   | 
								
								 | 
							  
							 
							Вроде такая проблема уже обсуждалась когда то. Виновата оказалась концовка "\r\n". Нужно просто "\n" 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							Не будите спашяго дракона.              Джаффар (Коша)  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							Kultura
							
								Помогающий 
								
								 
								  Offline
								
								
								
								
							 
						 | 
						
							
								  | 
								
									
									 « Ответ #2 : 07-09-2009 06:12 »   | 
								
								 | 
							  
							 
							Вроде такая проблема уже обсуждалась когда то. Виновата оказалась концовка "\r\n". Нужно просто "\n"
  да нет, не помогает (заодно попробовал и "\n\r" и "\n" и "\r")  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							Вад
							
						 | 
						
							
								  | 
								
									
									 « Ответ #3 : 07-09-2009 07:46 »   | 
								
								 | 
							  
							 
							По-моему, "\r\n" - правильный перевод строки для подобных протоколов. Во всяком случае, в HTTP так. Скорее всего, не хватает ещё одной, пустой строки, которая указывает на конец заголовка. Попробуй  String ^ ssData = "USER " + "myusername@gmail.com" + "\r\n\r\n";
  Это не то чтобы совсем пальцем в небо, но я не уверен, что нужно именно так    
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							Kultura
							
								Помогающий 
								
								 
								  Offline
								
								
								
								
							 
						 | 
						
							
								  | 
								
									
									 « Ответ #4 : 07-09-2009 08:55 »   | 
								
								 | 
							  
							 
							По-моему, "\r\n" - правильный перевод строки для подобных протоколов. Во всяком случае, в HTTP так. Скорее всего, не хватает ещё одной, пустой строки, которая указывает на конец заголовка. Попробуй  String ^ ssData = "USER " + "myusername@gmail.com" + "\r\n\r\n";
  Это не то чтобы совсем пальцем в небо, но я не уверен, что нужно именно так     Нет, не работает. При этом netStrm->Write (clicData, 0, clicData->Length); выполняется вроде бы нормально (при любых \r и \n), а исключение появляется на ReadLine ()    Может RFC поискать, только какой из них мне нужен?  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							Вад
							
						 | 
						
							
								  | 
								
									
									 « Ответ #5 : 07-09-2009 09:15 »   | 
								
								 | 
							  
							 
							Kultura, если удалённый хост разрывает соединение, значит, ты что-то не так передаёшь. Для начала, читать стоит  http://www.ietf.org/rfc/rfc1939.txt Потом ещё наверняка потребуется читать RFC по конкретному расширению для авторизации.  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							Kultura
							
								Помогающий 
								
								 
								  Offline
								
								
								
								
							 
						 | 
						
							
								  | 
								
									
									 « Ответ #6 : 07-09-2009 09:30 »   | 
								
								 | 
							  
							 
							Kultura, если удалённый хост разрывает соединение, значит, ты что-то не так передаёшь. Для начала, читать стоит  http://www.ietf.org/rfc/rfc1939.txt Потом ещё наверняка потребуется читать RFC по конкретному расширению для авторизации.  Последнее где искать? У google (т.е. у того, к кому подключаюсь), что-то ничего по rfc пока не нахожу. Впринципе, "USER " + " myusername@gmail.com" + "\r\n", самая стандартная комманда (хотя любые другие комманды дают тот же эффект), а в чем еще может быть ошибка  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
									« Последнее редактирование: 07-09-2009 09:32 от Kultura »
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							Артем
							
								Опытный 
								
								 
								  Offline
								Пол:   
								Beware the wolf in sheep's clothing.
								
								
								
								
								
							  
						 | 
						
							
								  | 
								
									
									 « Ответ #7 : 07-09-2009 10:06 »   | 
								
								 | 
							  
							 
							Недавно подключал почтового-клиента к gmail, так у них в инструкции на сайте написано: "Сервер входящей почты (POP3), требуется SSL"
  т.е. может он рвет соединение, потому что не используется SSL?
  Может попробовать другой, более "простой" почтовик 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
									« Последнее редактирование: 07-09-2009 10:08 от Артем »
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							Kultura
							
								Помогающий 
								
								 
								  Offline
								
								
								
								
							 
						 | 
						
							
								  | 
								
									
									 « Ответ #8 : 07-09-2009 14:05 »   | 
								
								 | 
							  
							 
							Недавно подключал почтового-клиента к gmail, так у них в инструкции на сайте написано: "Сервер входящей почты (POP3), требуется SSL"
  т.е. может он рвет соединение, потому что не используется SSL?
  Может попробовать другой, более "простой" почтовик
  Да, и вправду, на mail.ru заработало. Спасибо. А все таки, обучающих целей ради, как подключить SSL?  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							Serg79
							
						 | 
						
							
								  | 
								
									
									 « Ответ #9 : 07-09-2009 14:37 »   | 
								
								 | 
							  
							 
							А все таки, обучающих целей ради, как подключить SSL?
  Смотри библиотеку OpenSSL.  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							Kultura
							
								Помогающий 
								
								 
								  Offline
								
								
								
								
							 
						 | 
						
							
								  | 
								
									
									 « Ответ #10 : 07-09-2009 17:28 »   | 
								
								 | 
							  
							 
							А все таки, обучающих целей ради, как подключить SSL?
  Смотри библиотеку OpenSSL. Почитал про OpenSSL.  Пока не совсем понимаю, как это связать с моей задачей - получения почты с защищенного SSL сервера. System::Net::Sockets::TcpClient уже не годится? В общем, вопрос такой: что используется вместо TcpClient и в каком месте применяется OpenSSL? Ну, как говороится, что знал, то  сказал.    
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							RXL
							
						 | 
						
							
								  | 
								
									
									 « Ответ #11 : 08-09-2009 18:38 »   | 
								
								 | 
							  
							 
							Kultura, передача данных остается, но добавляется прослойка SSL. После настройки и подключения SSL к сокету, разница только в том, что читать и писать надо через функционал SSL, а мониторить наличие входных данных и состояние канала - как раньше. 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. 
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							Kultura
							
								Помогающий 
								
								 
								  Offline
								
								
								
								
							 
						 | 
						
							
								  | 
								
									
									 « Ответ #12 : 10-09-2009 16:49 »   | 
								
								 | 
							  
							 
							Kultura, передача данных остается, но добавляется прослойка SSL. После настройки и подключения SSL к сокету, разница только в том, что читать и писать надо через функционал SSL, а мониторить наличие входных данных и состояние канала - как раньше.
  Ну, в общем, понятно, с бравого наскока SSL не победить. А есть какая-нибудь хорошая книжечка по сокетам и сетевому программированию, что б подобные вещи были хорошо объяснены?  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
									« Последнее редактирование: 10-09-2009 16:55 от Kultura »
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							Finch
							
								Спокойный 
								Администратор
								
								 
								  Offline
								Пол:   
								
								Пролетал мимо
								
								
								
								
								
							  
						 | 
						
							
								  | 
								
									
									 « Ответ #13 : 10-09-2009 18:49 »   | 
								
								 | 
							  
							 
							Для Linux систем довольно хорошая книга Шон Уолтон "Создание сетевых приложений в среде Linux: Руководство Разработчика."  В принципе там довольно хорошо описана работа с сокетами. Переносимость под винду где то на 90 процентов. Просто в MS в вопросе сокетов некоторые моменты пошли своим путем. 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							Не будите спашяго дракона.              Джаффар (Коша)  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							RXL
							
						 | 
						
							
								  | 
								
									
									 « Ответ #14 : 10-09-2009 20:56 »   | 
								
								 | 
							  
							 
							Для Unix — Стивенс, "Unix: разработка сетевых приложений".
  Про SSL — доки на openssl.org. 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
									« Последнее редактирование: 12-09-2009 10:08 от RXL »
								 | 
								
									 
									Записан
								 | 
							  
							 
							... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. 
						 | 
					 
				 
			 |  
		 
	 | 
	| 
		
		
	 | 
	
		
		
			
				
					
						
							Артем
							
								Опытный 
								
								 
								  Offline
								Пол:   
								Beware the wolf in sheep's clothing.
								
								
								
								
								
							  
						 | 
						
							
								  | 
								
									
									 « Ответ #16 : 11-09-2009 07:04 »   | 
								
								 | 
							  
							 
							 А есть какая-нибудь хорошая книжечка по сокетам и сетевому программированию, что б подобные вещи были хорошо объяснены?
  Мне очень помогла "Протоколы TCP/IP. В подлиннике" Стивенса. У меня бумажная версия, но думаю, можно найти и в электронном. Мне она понравиласьтем, что там довольно доходчиво (и главное -- применительно к программированию) описаны многих "администраторские" вещи (касательно сетевого взаимодействия), которые мне (как программисту) были не известны или не понятны. P.S. По моему, я даже видел ее на этом сайте в ресурсах...  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							RXL
							
						 | 
						
							
								  | 
								
									
									 « Ответ #17 : 12-09-2009 10:09 »   | 
								
								 | 
							  
							 
							Артем, совершенно верно, но в у нас она на английском. 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. 
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							Kultura
							
								Помогающий 
								
								 
								  Offline
								
								
								
								
							 
						 | 
						
							
								  | 
								
									
									«  Ответ #18 : 15-09-2009 14:30 »    | 
								
								 | 
							  
							 
							Спасибо! 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	 |