Текущий архив: 2006.05.07;
Скачать: CL | DM;
ВнизНомер порта(Addr.sin_port) Найти похожие ветки
← →
GanibalLector © (2006-01-16 19:46) [0]Есть акцептирующая нить.В случае успешного акцепта создается еще одна нить.Параметром в эту нить передаю
Addr и TSocket.Далее эта нить работает и в конце,мне хотелось получить IP клиента и номер порта.
Значит,перейдем к сабжу :
//акцептирующая нить
type
TMode=record
Sock:TSocket;
Addr:TSockAddr;
end;
PMode = ^TMode;
...
if Select(0,@FDSet,nil,nil,@Tm)<>0 then
begin
if FD_IsSet(Sock,FDSet) then
begin
AcceptedSock:=Accept(Sock,@Addr,@Len);
if AcceptedSock<>Invalid_Socket then
begin
GetMem(Val,SizeOf(TMode));
Val.Sock:=AcceptedSock;
Val.Addr:=Addr;
BeginThread(nil,0,@ProcessSockEvents,PMode(Val),0,ThId);
...
// рабочая нить
function ProcessSockEvents(Param:Pointer):Integer;
var Sock:TSocket;
begin
...
Sock:=PMode(Param).Sock;
...
Form1.Memo1.Lines.Add("Created:"+LongToIp(PMode(Param).Addr.sin_addr.S_addr));
Form1.Memo1.Lines.Add("Port"+IntToStr(PMode(Param).Addr.sin_port));
// не обращайте внимания на ОТСУТСТВИЕ синхронизации! Это пока черновик!
С IP все впорядке,получаю IP клиентов.А вот с номером порта беда :( Значение получаемое Addr.sin_port
отличается от значения порта,которое показывает утилита TCP-View.
В чем я не прав?
← →
atruhin © (2006-01-16 20:10) [1]Addr.sin_port - обратный порядок байт.
см. htons, ntohs
← →
GanibalLector © (2006-01-17 00:15) [2]2 atruhin © (16.01.06 20:10) [1]
Таки да. Лажанулся ;)
Страницы: 1 вся ветка
Текущий архив: 2006.05.07;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.011 c