![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
winsock [D7, WinXP]
redlord © (2006-02-23 21:00:00)народ подскажите
я использую процедуры библиотеки winsock для создания клиента .
порт удаленной машины я указываю сам , а
как узнать порт сокета (на моем компе )который выделила система для моего клиента
GanibalLector (2006-02-27 01:12:00) [1]Таки да, GetSockName рулит ;) Не досмотрел.
==777== (2006-02-26 19:29:00) [2]sizeaddr:=sizeof(Tsockaddr);
if GetSockname(s,addr,sizeaddr)=0 then
memo1.Lines.add('Local port: '+inttostr(addr.sin_port));
GanibalLector (2006-02-25 01:58:00) [3]>ИМХО сабж возможен на "сырых" сокетах
Которые некорректно себя ведут в WinXP c KB893066.Обязательно сносить ;)
2 Модераторам
"Начинающим" тут не пахнет,верните в "Сети".
GanibalLector (2006-02-25 01:53:00) [4]Значит смотри...когда в клиенте ты делаешь Connect, то стэк TCP/IP сам назначит уникальный port. Как я и сказал в [4] до вызова Connect ты сможешь сам задать номер порта вызвав Bind. Но ИМХО это от Лукавого. Объясню почему : предположим клиент связывается\передает\разрывается несколько раз в секунду. Так вот,если посмотреть на клиентские порты в момент соединения,то можно увидеть,что они все различны!!! Обычно инкрементированы. И сделано это намерено! Если же на клиенте делать Bind с привязкой определенного порта,то при втором коннекте ты получишь ошибку. Естественно,можно ее разрулить дождавшись окончания состояния TIME_WAIT, которое наступит через 2 минуты(вроде...точне не знаю).
Я бы рекомендовал следующее(при условии,что исходники сервера твои) :
-(клиент) Connect;
-(сервер) определить номер порта клиента и отослать
-(клиент) получить и "засветить"
З.Ы. Кстати,ИМХО сабж возможен на "сырых" сокетах. По этому принципу построены все сниферы.
GanibalLector (2006-02-24 20:05:00) [5]Вроде бы Bind,хотя он используется в основном для сервера ;) Вечером проверю и сообщу.
redlord (2006-02-24 16:36:00) [6]народ выручайти
если что не понятно спросил постараюс разяснить тока скажите что
redlord (2006-02-24 01:49:00) [7]я использую процедуры библиотеки winsock
Sysanin (2006-02-24 01:09:00) [8]Если ты делаешь через SocketServer и SocketClient, то порт указывается в SocketServer...