| 
			| 
					
						| Алексей++ 
								глобальный и пушистыйГлобальный модератор    Offline 
								Сообщений: 13
								
								
								
								
								
							 | 
								|  | «  : 29-03-2012 08:49 »  |  | 
 
 пришлось поработать с чистым винапишным сокетом , и вот такая беда приключилась. Иногда подключенный сокет клиента переходит в статус CLOSE_WAIT (за происходящим смотрим в TCPView ) - через час-два работы. И остаётся так висеть.  В сервере сделан отпин неактивных клиентов (если 5 минут нет данных вызов closesocket() ) .  Но тут и странность, что всё равно остаются сокеты висеть.
 вопрос - как программно определяется текущий статус сокета (говорю про сокет из серверного массива клиентов , а не про сокет удалённого клиента) ?  Может быть, если я увижу, что статус стал CLOSE_WAIT , я просто напросто закрою сокет и проблема решится ?
 
 Добавлено через 39 минут и 13 секунд:
 если не сложно, дайте адекватный пример сервера на основе SOCKET . В тырнете ничего путного не ищется
 |  
						| 
								|  |  
								| « Последнее редактирование: 29-03-2012 09:28 от Алексей1153 » |  Записан | 
 
 |  |  | 
	| 
			| 
					
						| RXL | 
								|  | « Ответ #1 : 29-03-2012 09:48 »  |  | 
 
 CLOSE_WAIT - это нормальное поведение в рамках TCP. Длится порядка двух минут. К процессам они уже не привязаны.Миновать данную стадию можно послав TCP-пакет с флагом RST. Вроде как winsock не умеет таким управлять.
 |  
						| 
								|  |  
								|  |  Записан | 
 
 ... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |  |  | 
	| 
			| 
					
						| Алексей++ 
								глобальный и пушистыйГлобальный модератор    Offline 
								Сообщений: 13
								
								
								
								
								
							 | 
								|  | « Ответ #2 : 29-03-2012 09:50 »  |  | 
 
 Рома, зак говорит - сокет висит до талого снега. Только после перезапуска программы отваливаетсяДобавлено через 2 минуты и 17 секунд: CLOSE_WAIT - это нормальное поведение в рамках TCP. Длится порядка двух минут. К процессам они уже не привязаны.Миновать данную стадию можно послав TCP-пакет с флагом RST. Вроде как winsock не умеет таким управлять.
 
 это не вот этой функцией делается случайно ? WSASendDisconnect |  
						| 
								|  |  
								| « Последнее редактирование: 29-03-2012 09:53 от Алексей1153++ » |  Записан | 
 
 |  |  | 
	| 
			| 
					
						| RXL | 
								|  | « Ответ #3 : 29-03-2012 13:57 »  |  | 
 
 WSA-функции дают дополнительный сервис. Работать с сокетами можно и без них. Попробуй еще функцию socketshutdown (не помню точно название) перед закрытием сокета. |  
						| 
								|  |  
								|  |  Записан | 
 
 ... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |  |  | 
	| 
			| 
					
						| Алексей++ 
								глобальный и пушистыйГлобальный модератор    Offline 
								Сообщений: 13
								
								
								
								
								
							 | 
								|  | « Ответ #4 : 29-03-2012 16:10 »  |  | 
 
 ок, попробую |  
						| 
								|  |  
								|  |  Записан | 
 
 |  |  | 
	| 
			| 
					
						| darkelf 
								Молодой специалист    Offline | 
								|  | « Ответ #5 : 29-03-2012 17:07 »  |  | 
 
 WSA-функции дают дополнительный сервис. Работать с сокетами можно и без них. Попробуй еще функцию socketshutdown (не помню точно название) перед закрытием сокета.
 просто shutdown() |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| RXL | 
								|  | « Ответ #6 : 30-03-2012 03:49 »  |  | 
 
 В винде все через Ж...Простое закрытие сокета должно приводить к сбросу буферов и последующей инициации завершения.
 Может у тебя файрволы мешаются?
 |  
						| 
								|  |  
								|  |  Записан | 
 
 ... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |  |  | 
	| 
			| 
					
						| darkelf 
								Молодой специалист    Offline | 
								|  | « Ответ #7 : 30-03-2012 05:26 »  |  | 
 
 кстати, если не ошибаюсь программно закрытый с той стороны дескриптор можно определить довольно просто - попробовать туда что-нибудь выдать, в ответ должен прийти EPIPE (а в unix, если не сделано дополнительных действий, ещё и SIGPIPE). Хотя, имхо, это и не выход. |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Алексей++ 
								глобальный и пушистыйГлобальный модератор    Offline 
								Сообщений: 13
								
								
								
								
								
							 | 
								|  | « Ответ #8 : 30-03-2012 10:39 »  |  | 
 
 RXL, дело там, похоже, не в shutdown - с ним не поменялось. Кое что выясняем, делаю подробный лог. |  
						| 
								|  |  
								|  |  Записан | 
 
 |  |  | 
	| 
			| 
					
						| Алексей++ 
								глобальный и пушистыйГлобальный модератор    Offline 
								Сообщений: 13
								
								
								
								
								
							 | 
								|  | « Ответ #9 : 30-03-2012 11:48 »  |  | 
 
 во всём была виновата тупая очепятка    |  
						| 
								|  |  
								|  |  Записан | 
 
 |  |  | 
	| 
			| 
					
						| zubr 
								Гость
 | 
								|  | « Ответ #10 : 30-03-2012 12:14 »  |  | 
 
 Во, во, а то сразу - Windows мастдай |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| RXL | 
								|  | « Ответ #11 : 30-03-2012 12:18 »  |  | 
 
 Хор: Маст дай, маст дай! Виндовс маст дай!    |  
						| 
								|  |  
								|  |  Записан | 
 
 ... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |  |  | 
	| 
			| 
					
						| Алексей++ 
								глобальный и пушистыйГлобальный модератор    Offline 
								Сообщений: 13
								
								
								
								
								
							 | 
								|  | « Ответ #12 : 30-03-2012 15:07 »  |  | 
 
 ха ха, устроили тут )) |  
						| 
								|  |  
								|  |  Записан | 
 
 |  |  | 
	| 
			| 
					
						| vs 
								Новенький    Offline | 
								|  | « Ответ #13 : 13-01-2016 09:36 »  |  | 
 
 Алексей++,добрый день,
 аналогичная проблема:
 делаю shutdown и closesocket
 а secketы накапливаются с CLOSE_WAIT
 неужели тоже опечатка ?
 подскажите, какая была у вас - проверю у себя
 
 С уважением
 
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Алексей++ 
								глобальный и пушистыйГлобальный модератор    Offline 
								Сообщений: 13
								
								
								
								
								
							 | 
								|  | « Ответ #14 :  14-01-2016 05:01 »   |  | 
 
 vs, ой, я уж не помню, что там было ))
 видимо, тоже лог придётся вести и смотреть, где действия неправильные. Что-то где-то недовызывается
 |  
						| 
								|  |  
								|  |  Записан | 
 
 |  |  | 
	|  |