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

Вниз

socket+ctBlocking   Найти похожие ветки 

 
kostik78ua   (2003-01-24 09:47) [0]

Помогите разобраться с сокетами.
На форму поместил ServerSocket1 (stNonBlocking) и 6 ClientSocket-ов (ctBlocking).

procedure TForm1.Button1Click(Sender: TObject);
begin
ServerSocket1.Port:=1234;

ClientSocket1(..6).Port:=1234;
ClientSocket1(..6).Host:="localhost";

ServerSocket1.Open;
ClientSocket1(..6).Open;
end;

В результате 5 коннектов проходят, а на шестом выдает 10061 ошибку (Подключение не установлено).

Интересно, что при ClientSocket1.ClientType = ctNonBlocking; соединений может быть сколько угодно (больше пяти).

Объясните почему и как с этим бороться!


 
Digitman ©   (2003-01-24 10:04) [1]

приведи-ка ты полный код)


 
kostik78ua   (2003-01-24 10:12) [2]

procedure TForm1.Button1Click(Sender: TObject);
begin
ss.Port:=1234;
ss.ServerType:=stNonBlocking;
ss.Open;

cs1.Port:=1234;
cs2.Port:=1234;
cs3.Port:=1234;
cs4.Port:=1234;
cs5.Port:=1234;
cs6.Port:=1234;

cs1.Host:="localhost";
cs2.Host:="localhost";
cs3.Host:="localhost";
cs4.Host:="localhost";
cs5.Host:="localhost";
cs6.Host:="localhost";

cs1.ClientType:=ctBlocking;
cs2.ClientType:=ctBlocking;
cs3.ClientType:=ctBlocking;
cs4.ClientType:=ctBlocking;
cs5.ClientType:=ctBlocking;
cs6.ClientType:=ctBlocking;

cs1.Open;
cs2.Open;
cs3.Open;
cs4.Open;
cs5.Open;
cs6.Open;
end;

procedure TForm1.ssClientRead(Sender: TObject;
Socket: TCustomWinSocket);
begin
if Socket.ReceiveLength>0 then Memo1.Lines.Add(Socket.ReceiveText);
end;

procedure TForm1.Button2Click(Sender: TObject);
var
Stream : TWinSocketStream;
Buffer : array[0 .. 100] of Char;
begin
Stream := TWinSocketStream.Create(cs1.Socket, 60000);
try
FillChar(Buffer, length(Buffer), #0);
Buffer := "11111";
Stream.Write(Buffer, StrLen(@Buffer));
finally
Stream.Free;
end;
end;


 
Digitman ©   (2003-01-24 10:57) [3]

Это нормально. По-умолчанию для тек.реализации WinSock-сервис-провайдера очередь вх.запросов к серверному "слушающему" гнезду на акцепт не превышает SOMAXCONN = 5.
6-й запрос (в составе твоих 6-ти почти одновременных необработанных запросов на соединение) будет отвержен из-за превышения размера backlog-очереди.

См. описание WinSock-ф-ции listen()


 
Digitman ©   (2003-01-24 12:12) [4]

WSAECONNREFUSED = 10061

Даже имя константы кода ошибки об этом говорит :
"Winsock application error : connection REFUSED")

Читай документацию на WinSock)



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

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

Наверх




Память: 0.47 MB
Время: 0.013 c
7-39599
Lobio
2003-01-17 21:55
2003.03.13
IP в локальной сети.


4-39636
Max2002
2003-01-23 12:35
2003.03.13
поиск текста в TWebBrowser


1-39402
AZ
2003-03-02 14:07
2003.03.13
---|Ветка была без названия|---


3-39196
PrettyFly
2003-02-20 17:32
2003.03.13
Проблема с


8-39416
Mihon from Haba
2002-11-29 18:25
2003.03.13
Отображение двумерного массива максимально быстро