Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.10.10;
Скачать: CL | DM;

Вниз

вопрос про порты   Найти похожие ветки 

 
Kurtevich   (2004-07-29 10:54) [0]

говорят, когда сервер слушает запросы на коннект по порту ХХХ, то после коннекта он работает с клиентом уже через другой порт... это так? и нужно ли такое делать самостоятельно, чтобы не заколбасить порт большим количеством подключений? подскажите плизз, если кто на самом деле знает... :)


 
Digitman ©   (2004-07-29 11:22) [1]


> это так?


нет, это не так
в контексте соединения с вновь подключившимся клиентом сервер использует тот же номер порта, что и слушающий порт


 
Rouse_ ©   (2004-07-29 11:45) [2]

Просто создается еще один экземпляр сокета функцией accept который и общается с клиентом а первоначальный сокет продолжает слушать порт на наличие новых подключений...


 
Kurtevich   (2004-07-29 13:04) [3]

вот-вот... вот это оно... дык я ж к тому: порт соккета, возвращенного акцептом тот же самый, что и у слушающего? и нужно ли / можно ли его поменять? сколько нада клиентов, шоб забить этот несщасный порт под самую тюбетейку? если у меня их будет 2^10 или больше? %-(


 
Verg ©   (2004-07-29 13:18) [4]

У соединенных сокетов всегда два адреса локальныйIP:локальныйПОРТ + дальнийIP:дальнийПОРТ

Соответственно, accept воозвращает сокет у которого -
локальныйIP:порт прослушки+IPклиента:портКлиента

Ничего тут не поменять, да и незачем.

Порт - это не овощная яма, шоб его забивать.
Забить по самую тубетэйк могут твой нсщасный процесс(программу-сервер), а не порт. Сколько для этого понадобится клиентов зависит от многих факторов. Прежде всего от того как твоя программа-сервер будет обслуживать каждого из этих клиентов, ну в конце-концов можно и тюбетейку снять :))


 
Digitman ©   (2004-07-29 13:52) [5]


> Kurtevich   (29.07.04 13:04) [3]


..но тубэтейк лучше не снимай.. система сама разберется и даст тебе знать, когда будет "по самый тубэтейк" .. вот тогда и будешь мозговать, как можно (и возможно ли вообще) умерить свои аппетиты в отношении ресурсов своего процесса, чтобы в этот самый тубэтейк полезло побольше


 
Rouse_ ©   (2004-07-29 15:45) [6]

> если у меня их будет 2^10 или больше?
Не будет у тебя столько, просто не хватит ситемных ресурсов. Немного абстрагируясь можно сказать что TSocket являится аналогом THandle которого всегда конечное количество...
Но это так к слову :)


 
Kurtevich   (2004-07-29 18:45) [7]

не знаю что такое THandle, но подозреваю что так же как и SOCKET это на самом деле указатель размера unsigned int...

а сколько же максимум их может быть и чем это ограничено?


> система сама разберется и даст тебе знать, когда будет "по
> самый тубэтейк"


спасибо, но если бы я хотел дождаться этого момента, я бы не задавал такие вопросы, а делал бы всё методом "авось прокатит"... :)


 
Kurtevich   (2004-07-29 18:49) [8]

кажется даже когда-то я видел где-то в каких-то виндовзких хэдэрах что-то типа

#define HANDLE *void

но это так, к слову... :)


 
Kurtevich   (2004-07-29 18:51) [9]

то есть я конечно-же хотел сказать

typedef HANDLE *void

:) бывает...


 
Kurtevich   (2004-07-29 18:53) [10]

... или typedef void* HANDLE ???
да, старость не радость... :)


 
panov ©   (2004-07-30 09:43) [11]

type
THandle = LongWord;


 
Digitman ©   (2004-07-30 10:18) [12]


> спасибо, но если бы я хотел дождаться этого момента, я бы
> не задавал такие вопросы, а делал бы всё методом "авось
> прокатит"...


можешь сам поэкспериментировать в "ловле момента" и грубо оценить примерные размеры "тубетэйк"

для этого нужно :

- взять компонент ClientSocket,
- установить у него св-ва Host = "localhost" и Port = номер_заведомо_неактивного_порта_на_лок_машине,
- установить обработчик OnError след.образом :

var
 TyubeteikCapacity: Integer = 1;
...
 Inc(TyubiteikCapacity);
 ErrorCode = 0;
 try
   ClientSocket.Open;
 except
   ShowMessage("По самый тубетейк = " + IntToStr(TyubiteikCapacity));
 end

- выполнить метод ClientSocket.Open


 
Kurtevich   (2004-07-30 12:23) [13]


> ShowMessage("По самый тубетейк = " + IntToStr(TyubiteikCapacity));


:D  ....круто! :)))

никогда не юзал дельфийские соккетные компоненты и не собираюсь


 
Digitman ©   (2004-07-30 12:30) [14]


> Kurtevich   (30.07.04 12:23) [13]


ну и глупо
к тому же можно было сообразить тем что находится под тубетейк, что пример дан НЕ для реального "юзанья", а для детального исследования, ЧТО и КАК происходит при достижения ситуации "по самый тубетейк"


 
Kurtevich   (2004-07-30 13:46) [15]


> Digitman ©   (30.07.04 12:30) [14]


я написал, что никогда не юзал TSocket совсем не для того, чтобы оскорбить тебя, Digiman. А пример на самом деле убил меня этим самым
> var
>  TyubeteikCapacity: Integer = 1;

потому что это на самом деле круто :) вот и всё.



Страницы: 1 вся ветка

Текущий архив: 2004.10.10;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.035 c
1-1096360969
Charly22
2004-09-28 12:42
2004.10.10
TSpeedButton


4-1094191026
Chery
2004-09-03 09:57
2004.10.10
Как перехватить нажатие клавиш Shift + Delete ?


10-1045474963
Vladimir
2003-02-20 11:03
2004.10.10
corba callback


8-1089821315
miek
2004-07-14 20:08
2004.10.10
GLScene, версия от 10.06.2004


1-1095828547
_sulent
2004-09-22 08:49
2004.10.10
Шрифт