Вниз
Скачать: CL | DM;

winsock назначение порта серверу   Найти похожие ветки 

← →
newprogrammer   (2006-02-19 20:46) [0]

в описании по Winsoc сказано что порт сервера не обязателно назначат явно а можно доверит ето системе
Addr.sin_port:=0;
но как потом узнать какой именно порт выделила система моему сокету


← →
atruhin ©   (2006-02-20 06:41) [1]

Ты немного перепутал. Ты должен назначить серверу слушающий порт, когда к немы подсоединяется клиент, сервер вызывает функцию Accept и система возвращает свободный порт для работы, и устанавливает по немы соединение.


← →
newprogrammer   (2006-02-20 11:56) [2]

вот вырезка из статьи по иницыализации слушающего сокета:

Теперь рассмотрим другой случай: пусть выбор адреса и порта можно оставить на усмотрение системы. Тогда код будет выглядеть следующим образом:

Addr.sin_family:=PF_Inet;
Addr.sin_addr.S_addr:=InAddr_Any;
Addr.sin_port:=0;
FillChar(Addr.sin_zero,SizeOf(Addr.sin_zero),0);
if Bind(S,Addr,SizeOf(Addr))=Socket_Error then
begin
 // какая-то ошибка, анализируем с помощью WSAGetLastError
end;

При использовании TCP сервер сам не является инициатором подключения, но может работать с любым подключившимся клиентом, какой бы у него ни был адрес. Для сервера принципиально, какой порт он будет использовать - если порт не определён заранее, клиент не будет знать, куда подключаться. Поэтому номер порта является важным признаком для сервера. (Иногда, впрочем, встречаются серверы, порт которых заранее неизвестен, но в таких случаях всегда существует другой канал передачи данных, позволяющий клиенту до подключения узнать, какой порт используется в данный момент сервером.)


← →
Polevi ©   (2006-02-20 13:29) [3]

if the port is specified as zero, the service provider will assign a unique port to the application with a value between 1024 and 5000. The application can use getsockname after bind to learn the address and the port that has been assigned to it



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

Скачать: CL | DM;



Память: 0.45 MB
Время: -0.973 c
3-1146728733
Alexey V.
2006-05-04 11:45
2006.07.02
Курс валюты в выходные дни


2-1150365436
Тимофей Юрьевич
2006-06-15 13:57
2006.07.02
передача данных по сети


2-1150446404
Gon
2006-06-16 12:26
2006.07.02
StringGrid


3-1146826309
Fiend
2006-05-05 14:51
2006.07.02
база из нескольких файлов


2-1150260316
Призрак
2006-06-14 08:45
2006.07.02
Передать THandle как Cardinal




   Наверх