ClientSocket
Olá colegas
Eu uso Delphi 6 e utilizo o componente client Socket da FastNet.
Gostaria de saber a possibilidade de setar a porta local deste componente, mas não consigo, pois ele diz que é uma propriedade read only.
Em todo caso se alguém tiver alguma idéia de como fazer isso, ficarei agradecido, pois uso este componente em vários projetos, mas caso alguém tenha outra sugestão tb é bem aceito.
Abraços
George
Eu uso Delphi 6 e utilizo o componente client Socket da FastNet.
Gostaria de saber a possibilidade de setar a porta local deste componente, mas não consigo, pois ele diz que é uma propriedade read only.
Em todo caso se alguém tiver alguma idéia de como fazer isso, ficarei agradecido, pois uso este componente em vários projetos, mas caso alguém tenha outra sugestão tb é bem aceito.
Abraços
George
George_piaulino
Curtidas 0
Melhor post
George_piaulino
07/12/2005
Para o conhecimento de todos segue a solução deste problema
procedure TForm1.ClientSocket1Lookup(Sender: TObject; Socket: TCustomWinSocket);
var
Addr: TSockAddrIn;
teste, Err: Integer;
begin
teste:=0;
FillChar(Addr, teste, SizeOf(Addr));
Addr.sin_family := PF_INET;
Addr.sin_addr.s_addr := INADDR_ANY;
// if you want to bind to a specific local IP instead:
// Addr.sin_addr.s_addr := inet_addr(´the ip address here´);
Addr.sin_port := htons(7000);
if bind(Socket.SocketHandle, Addr, SizeOf(Addr)) <> 0 then
begin
Err := WSAGetLastError;
if Err <> WSAEWOULDBLOCK then
raise ESocketError.CreateResFmt(@sWindowsSocketError,
[SysErrorMessage(Err), Err, ´bind´]);
end;
procedure TForm1.ClientSocket1Lookup(Sender: TObject; Socket: TCustomWinSocket);
var
Addr: TSockAddrIn;
teste, Err: Integer;
begin
teste:=0;
FillChar(Addr, teste, SizeOf(Addr));
Addr.sin_family := PF_INET;
Addr.sin_addr.s_addr := INADDR_ANY;
// if you want to bind to a specific local IP instead:
// Addr.sin_addr.s_addr := inet_addr(´the ip address here´);
Addr.sin_port := htons(7000);
if bind(Socket.SocketHandle, Addr, SizeOf(Addr)) <> 0 then
begin
Err := WSAGetLastError;
if Err <> WSAEWOULDBLOCK then
raise ESocketError.CreateResFmt(@sWindowsSocketError,
[SysErrorMessage(Err), Err, ´bind´]);
end;
GOSTEI 1
Mais Respostas
Nildo
05/12/2005
Olá colegas
Eu uso Delphi 6 e utilizo o componente client Socket da FastNet.
Gostaria de saber a possibilidade de setar a porta local deste componente, mas não consigo, pois ele diz que é uma propriedade read only.
Em todo caso se alguém tiver alguma idéia de como fazer isso, ficarei agradecido, pois uso este componente em vários projetos, mas caso alguém tenha outra sugestão tb é bem aceito.
Abraços
George
Acho que voce tem que desativar a conexão dele antes de alterar a porta.
GOSTEI 0
George_piaulino
05/12/2005
[quote:14e76bb37a=´piaulino´]Olá colegas
Eu uso Delphi 6 e utilizo o componente client Socket da FastNet.
Gostaria de saber a possibilidade de setar a porta local deste componente, mas não consigo, pois ele diz que é uma propriedade read only.
Em todo caso se alguém tiver alguma idéia de como fazer isso, ficarei agradecido, pois uso este componente em vários projetos, mas caso alguém tenha outra sugestão tb é bem aceito.
Abraços
George
Acho que voce tem que desativar a conexão dele antes de alterar a porta.[/quote:14e76bb37a]
Isso eu sei, mas gostaria que vc tentasse mudar essa propriedade da porta local, a propriedade eh localporta via código, e isso não consigo.
Mas valeu pela dica
GOSTEI 0
Nildo
05/12/2005
Isso eu sei, mas gostaria que vc tentasse mudar essa propriedade da porta local, a propriedade eh localporta via código, e isso não consigo.
Mas valeu pela dica
Bom, daí já não sei. Mas parece que o TServerSocket da palesta Internet também não é possível mudar a portal local. Se eu não me engano também, os da Indy funcionam perfeitamente!
GOSTEI 0
Thomaz_prg
05/12/2005
Pessoal, me corrijam se eu estiver errado, mas, se em Port você colocar 127.0.0.1 ele não irá buscar localmente??
Isso seria equivalente a buscar um host local, colocando LocalHost no nome do host... faço assim e funciona.
Isso seria equivalente a buscar um host local, colocando LocalHost no nome do host... faço assim e funciona.
GOSTEI 0
George_piaulino
05/12/2005
Caros colegas
é o seguinte, o componente é o TclientSocket e o problema é o seguinte, isto é se for um problema.
Ao enviar uma mensagem ou um buffer para o TseverSocket, com certeza o Server vai me informar o IP e a porta de de origem, mas todavia ao me informar ele me indica portas sequênciais.
O que preciso é a possibilidade de setar a propriedade do LocalPort do TclientSocket como por exemplo 7500, mas infelizmente ele não deixa me informando que é uma propriedade Read Only.
Não me preocupo com o local host, pois o próprio componete já faz isso automaticamente.
Agora se não existe a possibilidade, terei uma grande diversão de alterar meus projetos...hehehehehehehehehe...
Mas em todo caso fico feliz pela atenção dada e caso alguém queira me sugerir algum outro método ou componente ficarei ainda mais feliz.
Como citou nosso colega anteriormente, a preguiça eh jogo duro.
Mas caso vcs analise faça um projeto client e um outro server e vcs verão qual porta de oprigem do client.
Abraços e vou a luta.
George
é o seguinte, o componente é o TclientSocket e o problema é o seguinte, isto é se for um problema.
Ao enviar uma mensagem ou um buffer para o TseverSocket, com certeza o Server vai me informar o IP e a porta de de origem, mas todavia ao me informar ele me indica portas sequênciais.
O que preciso é a possibilidade de setar a propriedade do LocalPort do TclientSocket como por exemplo 7500, mas infelizmente ele não deixa me informando que é uma propriedade Read Only.
Não me preocupo com o local host, pois o próprio componete já faz isso automaticamente.
Agora se não existe a possibilidade, terei uma grande diversão de alterar meus projetos...hehehehehehehehehe...
Mas em todo caso fico feliz pela atenção dada e caso alguém queira me sugerir algum outro método ou componente ficarei ainda mais feliz.
Como citou nosso colega anteriormente, a preguiça eh jogo duro.
Mas caso vcs analise faça um projeto client e um outro server e vcs verão qual porta de oprigem do client.
Abraços e vou a luta.
George
GOSTEI 0
Massuda
05/12/2005
...O que preciso é a possibilidade de setar a propriedade do LocalPort do TclientSocket como por exemplo 7500, mas infelizmente ele não deixa me informando que é uma propriedade Read Only.
Normalmente essa porta é escolhida pelo Windows, no intervalo 1024 a 5000. É mais eficiente deixar o Windows escolher essa porta do que você fixá-la e em todos os protocolos de aplicação (HTTP, FTP, etc) não faz diferença qual é essa porta.GOSTEI 0