Tcp сервер
Какие есть пути написания сервера, который мог бы принимать одновременно энное количество TCP-подключений к одному порту? Более широкая постановка вопроса: идеология создания сервера, способного работать по протоколу TCP одновременно с множеством клиентов, которые могут подключаться/отключаться в любой момент времени.
может попробуешь сделать чуть-чуть по-другому:
пусть клиенты коннектяться к одному порту. Когда коннект произошел, сервер открывает соединение на другой порт по своему усмотрению и сообщает об этом клиенту. Дальше они уже работают через новый порт.
Какие есть пути написания сервера, который мог бы принимать одновременно энное количество TCP-подключений к одному порту? Более широкая постановка вопроса: идеология создания сервера, способного работать по протоколу TCP одновременно с множеством клиентов, которые могут подключаться/отключаться в любой момент времени.
не понял юмора, коллеги. ВСЕ сервера принимают подключения по ОДНОМУ, "well known" порту. в чем вопрос?
А вопрос в том, что хотелось бы узнать, как написать программу-сервер, желательно с использованием WinSock, которая могла бы принимать более одного TCP-подключения к одному порту. Утверждение же о том, что "ВСЕ сервера принимают подключения по ОДНОМУ, "well known" порту", на мой новичковский взгляд не верна, ведь область вышеупомянутых портов простирается от 0-ого до 1024-ого порта, в то время как всё множество TCP-портов содержит 2^16 штук.
скажу точнее. процесс установления соединения по TCP/IP упрощенно выглядит так:
1. запускается сервер, который слушает определенный порт с номером, известным клиенту. скажем 7777
2. клиент коннектится на этот порт.
3. сервер принимает коннект, и открывает новый сокет - с другим номером порта. после этого обмен идет через этот "другой" порт.
4. сервер же продолжает себе слушать порт №7777 и принимать по нему TCP соединения.
исходя из вышесказанного - фраза:
которая могла бы принимать более одного TCP-подключения к одному порту
лишается смысла. повторюсь - любой сервер принимает произвольное количество подключений по одному порту. обмен ведется по другим портам. такова реализация TCP/IP. читайте RFC и не стоит изобретать велосипед. пусть даже з 5 колесами :)
А вопрос в том, что хотелось бы узнать, как написать программу-сервер, желательно с использованием WinSock, которая могла бы принимать более одного TCP-подключения к одному порту.- внимательнее читайте вопросы, а с RFC и другой вспомогательной "сортиркой" (типа "TCP/IP учебный курс"; Laura A.Chappell, Ed Tittel; "БХВ-Петербург"; 976 стр.) знакомы. По поводу механизма установления через один наперёд заданный порт: вещь очевидная и какому-либо обсуждению не подлежит. Если же Mr.squirL утверждает, что к одному порту сервера ни практически, ни теоретически невозможно одновременно подключить несколько (> 1) клиентов, то имею привести контрпример: Web-сервер принимает все входящие подключения по 80-му (в дес. сис. счисл) TCP-порту и весь дальнейший обмен данными происходит по этому "каналу" (конечно же, еще используется 53-ий UDP для разрешения имён), если я правильно понимаю ситуацию. Или же АСЯ: почти все данные гонятся по одному TCP-соединению, причём этот номер порта (5190 - по умолчанию, к примеру) сервера использую, очевидно, не только я один. Данные подтверждены экспериментально, хотя, конечно же, не исключается ошибка в обработке результатов. :)
внимательнее читайте вопросы
Если же Mr.squirL утверждает, что к одному порту сервера ни практически, ни теоретически невозможно одновременно подключить несколько (> 1) клиентов
Mr.squirL утверждает другое.
любой сервер принимает произвольное количество подключений по одному порту
Внимательнее читайте ответыX)-
А вопрос в том, что хотелось бы узнать, как написать программу-сервер, желательно с использованием WinSock, которая могла бы принимать более одного TCP-подключения к одному порту
и
утверждает, что к одному порту сервера ни практически, ни теоретически невозможно одновременно подключить несколько (> 1) клиентов
так кто это утверждает??? чего вы хотите???
с RFC и другой вспомогательной "сортиркой"
(типа "TCP/IP учебный курс"; Laura A.Chappell, Ed Tittel; "БХВ-Петербург"; 976 стр.) знакомы.
именно что - "знакомы"... я даже литературу расхотел советовать :(
Данные подтверждены экспериментально, хотя, конечно же, не исключается ошибка в обработке результатов. :)
погрешности подсчитаны?
http://ftp.citkit.ru/pub/ всё c комментариями. :(
P.S.: по поводу погрешностей: Mr. squirL, Вы случаем не физик?
P.S.: по поводу погрешностей: Mr. squirL, Вы случаем не физик?
:) немного есть. по поводу реализации - купи книгу Снейдера "Эффективное программирование TCP/IP". лучшей книги по этому вопросу я не видел (на русском). есть еще библия сетевого программера "TCP/IP Illustrated" - но она на англ.
:) немного есть.
Ооо! Лет, этак, через пяток мы с Вами коллегами тогда будем. :) А за литературу - Спасибо! В магазины/рынки придешь - ничего нет стоящего. :(
Ну, как говориться, будем поискать... По прямой наводке...