Felipedcb Postado Junho 26, 2005 Denunciar Share Postado Junho 26, 2005 Como eu posso fazer pro ServerSocket enviar msg para todos os ClienteSocket conectados?to usando bem assim:ServerSocket1.Socket.Connections[0].SendText( texto a ser enviado );mas ele só envia a msg pro primeiro cliente q conecto, os outros não recebem.... o q devo fazer? Link para o comentário Compartilhar em outros sites More sharing options...
0 Kikonanet Postado Junho 26, 2005 Denunciar Share Postado Junho 26, 2005 Olá Felipe,Tenta usar um For....Ex: For i:=0 to (n-1) do ServerSocket1.Socket.Connections[i].SendText( texto a ser enviado ); onde n, é o nº de Clientes conectados!Abs.Kiko Link para o comentário Compartilhar em outros sites More sharing options...
0 Felipedcb Postado Junho 26, 2005 Autor Denunciar Share Postado Junho 26, 2005 Vlwwwwwwwwws!Nussa... já quebrei a cabeça hj aki!agora deu tudo certo! Brigadaum...flws! Link para o comentário Compartilhar em outros sites More sharing options...
0 Felipedcb Postado Junho 26, 2005 Autor Denunciar Share Postado Junho 26, 2005 Na verdade... tah dando só um erro.Na hora que eu clico no botão que eu fiz para enviar a msg, aparece um erro na tela bem assim:List index out of bounds(2)uq é isso? Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Junho 26, 2005 Denunciar Share Postado Junho 26, 2005 "List index out of bounds" == "Índice de lista fora do limite", ou seja, você está especificando um índice que não existe.Abraços,Graymalkin Link para o comentário Compartilhar em outros sites More sharing options...
0 Felipedcb Postado Junho 26, 2005 Autor Denunciar Share Postado Junho 26, 2005 e o que eu deveria fazer para não aparecer esse erro?[]'s Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Junho 26, 2005 Denunciar Share Postado Junho 26, 2005 e o que eu deveria fazer para não aparecer esse erro? Acho que você não pegou o "espírito" da coisa... Imagine que você tem três conexões, cujos índices são 0, 1 e 2, mas você faz um "for" de 0 até 3. O índice 3 existe? Não... por isso você recebe esse erro.Ou seja, em algum lugar aí do código você está fazendo uma iteração que extrapola o limite da coleção.Abraços,Graymalkin Link para o comentário Compartilhar em outros sites More sharing options...
0 Felipedcb Postado Junho 26, 2005 Autor Denunciar Share Postado Junho 26, 2005 Entendi... foi com a estrutura de repetição que eu utilizei:For i:=0 to (n-1) doServerSocket1.Socket.Connections.SendText( texto a ser enviado );mas não sei como fazer pra mandar as msgs somente para o nº de cliente conectados, entendeu? Como eu posso fazer uma estrura de repetição que verifique quantos clientes estão conectados e mande a mensagem para todos eles.Porque do jeito q eu tinha feito ele vai mandando as mensagens até terminar o número de clientes conectados, ai dá o erro.[]'s Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Junho 27, 2005 Denunciar Share Postado Junho 27, 2005 Em "ServerSocket1.Socket.Connections" não existe uma propriedade como Count ou Length que te indique a quantidade?Graymalkin Link para o comentário Compartilhar em outros sites More sharing options...
0 Kikonanet Postado Junho 27, 2005 Denunciar Share Postado Junho 27, 2005 Olá Felipe,Use essa função para pegar o nº de conexões ativas.Tenta isso: var n:integer; begin n:=ServerSocket1.Socket.ActiveConnections; For i:=0 to n do ServerSocket1.Socket.Connections[i].SendText( texto a ser enviado ); end; qualquer coisa posta ae.Abs.Kiko Link para o comentário Compartilhar em outros sites More sharing options...
0 Felipedcb Postado Junho 28, 2005 Autor Denunciar Share Postado Junho 28, 2005 var n:integer;beginn:=ServerSocket1.Socket.ActiveConnections;For i:=0 to n doServerSocket1.Socket.Connections.SendText( texto a ser enviado );end;Funciono assim também, porém continua aparecendo o mesmo erro quando o texto é enviado.List index out of bounds(2)[]'s,Felipe Link para o comentário Compartilhar em outros sites More sharing options...
0 Kikonanet Postado Junho 28, 2005 Denunciar Share Postado Junho 28, 2005 Olá Felipe,n:=ServerSocket1.Socket.ActiveConnections;Essa função vai retornar um valor (ex. 10), que seria os usuários conectados!Se você fizer um For de 0 até n (10 no exemplo) você estará contando 11 vezes. Então você terá que contar de 1 até 10.For i:=1 to n ....qualquer coisa posta ae.Abs.Kiko Link para o comentário Compartilhar em outros sites More sharing options...
0 Felipedcb Postado Julho 2, 2005 Autor Denunciar Share Postado Julho 2, 2005 Essa função vai retornar um valor (ex. 10), que seria os usuários conectados!Se você fizer um For de 0 até n (10 no exemplo) você estará contando 11 vezes. Então você terá que contar de 1 até 10.For i:=1 to n ....qualquer coisa posta ae.Abs.Kiko Continua dando a mesma coisa... =\ uq será q tah acontecendo?[]'s,Felipe Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Julho 2, 2005 Denunciar Share Postado Julho 2, 2005 Essa função vai retornar um valor (ex. 10), que seria os usuários conectados!Se você fizer um For de 0 até n (10 no exemplo) você estará contando 11 vezes. Então você terá que contar de 1 até 10.For i:=1 to n ....qualquer coisa posta ae.Abs.Kiko Continua dando a mesma coisa... =\ uq será q tah acontecendo?[]'s,Felipe Você colocou o -1 como o Kiko sugeriu? Aliás, você entendeu que ele sugeriu isso?Abraços,Graymalkin Link para o comentário Compartilhar em outros sites More sharing options...
0 Felipedcb Postado Julho 2, 2005 Autor Denunciar Share Postado Julho 2, 2005 Você colocou o -1 como o Kiko sugeriu? Aliás, você entendeu que ele sugeriu isso?Bom, não só intendi, como coloquei tb, porem não é -1 não, é? é 1!sei lá, se for 1 eu intedi, mas você posto -1 agora já estou me confundindo. Porquê -1?[]'sFelipe Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Julho 2, 2005 Denunciar Share Postado Julho 2, 2005 Você colocou o -1 como o Kiko sugeriu? Aliás, você entendeu que ele sugeriu isso?Bom, não só intendi, como coloquei tb, porem não é -1 não, é? é 1!sei lá, se for 1 eu intedi, mas você posto -1 agora já estou me confundindo. Porquê -1?[]'sFelipe Assim:n:=ServerSocket1.Socket.ActiveConnections; For i:=0 to n-1 do ServerSocket1.Socket.Connections[i].SendText( texto a ser enviado);Supondo, é claro, que o índice comece de 0. Se começar de 1 aí é o exemplo dele mesmo. Quando aparece o erro descrito, qual o valor do índice atual? Qual o valor de "i" quando ocorre o erro?Abraços,Graymalkin Link para o comentário Compartilhar em outros sites More sharing options...
0 Felipedcb Postado Julho 2, 2005 Autor Denunciar Share Postado Julho 2, 2005 Supondo, é claro, que o índice comece de 0. Se começar de 1 aí é o exemplo dele mesmo. Quando aparece o erro descrito, qual o valor do índice atual? Qual o valor de "i" quando ocorre o erro?Parece que o erro ocorre logo após que o servidor envia a mensagem para todos os clientes, no caso então o valor de i na hora do erro seria igual ao número de clientes conectados. Ele envia a mensagem a fotos os clientes e dá o seguinte erro:List index out of bounds(2)que seria a mesma coisa que:List index out of bounds(i) Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Julho 2, 2005 Denunciar Share Postado Julho 2, 2005 Supondo, é claro, que o índice comece de 0. Se começar de 1 aí é o exemplo dele mesmo. Quando aparece o erro descrito, qual o valor do índice atual? Qual o valor de "i" quando ocorre o erro?Parece que o erro ocorre logo após que o servidor envia a mensagem para todos os clientes, no caso então o valor de i na hora do erro seria igual ao número de clientes conectados. Ele envia a mensagem a fotos os clientes e dá o seguinte erro:List index out of bounds(2)que seria a mesma coisa que:List index out of bounds(i) Aí é que está. Se o índice começar de 0 ele nunca deveria chegar ao número de clientes conectados. Se você possui 2 clientes conectados, o índices seriam 0 e 1 (ou seja, de 0 até 2-1). Isso é claro, supondo que comece de 0.Abraços,Graymalkin Link para o comentário Compartilhar em outros sites More sharing options...
0 Felipedcb Postado Julho 2, 2005 Autor Denunciar Share Postado Julho 2, 2005 sim... mas o erro está ocorrendo independente do valor do índice. de qualquer forma da o erro.[]'sFelipe Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Julho 2, 2005 Denunciar Share Postado Julho 2, 2005 sim... mas o erro está ocorrendo independente do valor do índice. de qualquer forma da o erro. Então, faça um teste aí. Se você possuir somente dois clientes conectados, execute o seguinte:ServerSocket1.Socket.Connections[0].SendText('teste1'); ServerSocket1.Socket.Connections[1].SendText('teste2');E veja se dá erro também.Abraços,Graymalkin Link para o comentário Compartilhar em outros sites More sharing options...
0 Felipedcb Postado Julho 2, 2005 Autor Denunciar Share Postado Julho 2, 2005 já fiz esse teste... e fiz novamente.das duas formas da o mesmo erro...uq poderá ser?[]'s,Felipe Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Julho 2, 2005 Denunciar Share Postado Julho 2, 2005 já fiz esse teste... e fiz novamente.das duas formas da o mesmo erro...uq poderá ser? Em qual das duas linhas dá o erro? Na do 0 ou na do 1?Abraços,Graymalkin Link para o comentário Compartilhar em outros sites More sharing options...
0 Felipedcb Postado Julho 2, 2005 Autor Denunciar Share Postado Julho 2, 2005 Ops... na verdade é o seguinte, se eu colocar somente essas duas linhas, como você postou aí em cima, não dá erro não, mesmo porque só tem dois clientes conectados o 0 e o 1. O problema está na estrutura de repetição. Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Julho 2, 2005 Denunciar Share Postado Julho 2, 2005 Ops... na verdade é o seguinte, se eu colocar somente essas duas linhas, como você postou aí em cima, não dá erro não, mesmo porque só tem dois clientes conectados o 0 e o 1. O problema está na estrutura de repetição. E se você fizer:n:=ServerSocket1.Socket.ActiveConnections; For i:=0 to n-1 do ServerSocket1.Socket.Connections[i].SendText('teste');Dá erro??? Graymalkin Link para o comentário Compartilhar em outros sites More sharing options...
0 Felipedcb Postado Julho 2, 2005 Autor Denunciar Share Postado Julho 2, 2005 Iá... agora não está dando erro mais não, acho que eu estava fazendo alguma coisa errada por falta de atenção.Bom... agora sim eu posso dá continuidade ao meu projeto. =]Vlws, muito obrigado mesmo, agora da rodando certinho.Só mais uma dúvida:Tem como eliminar as mensagens de erro do Delphi?eu quero colocar meus próprios erros, porém além de aparecer o meu, aparece o do Delphi também. O que eu devo fazer?[]'sFelipe Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Julho 2, 2005 Denunciar Share Postado Julho 2, 2005 Iá... agora não está dando erro mais não, acho que eu estava fazendo alguma coisa errada por falta de atenção.Bom... agora sim eu posso dá continuidade ao meu projeto. =]Vlws, muito obrigado mesmo, agora da rodando certinho.Só mais uma dúvida:Tem como eliminar as mensagens de erro do Delphi?eu quero colocar meus próprios erros, porém além de aparecer o meu, aparece o do Delphi também. O que eu devo fazer?Se você está utilizando o Try para tratar os erros é normal que o erro do Delphi apareça também. Note que ele (o erro do Delphi) só vai aparecer enquanto você estiver executando o programa dentro do ambiente do Delphi. Depois de compilado e executado externamente você só vai ver a mensagem de erro que você definiu.Certo? Abraços,Graymalkin Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Felipedcb
Como eu posso fazer pro ServerSocket enviar msg para todos os ClienteSocket conectados?
to usando bem assim:
ServerSocket1.Socket.Connections[0].SendText( texto a ser enviado );
mas ele só envia a msg pro primeiro cliente q conecto, os outros não recebem.... o q devo fazer?
Link para o comentário
Compartilhar em outros sites
26 respostass a esta questão
Posts Recomendados