Ir para conteúdo
Fórum Script Brasil
  • 0

Vefiricar Conexão Com Winsock


Lucas Phillip

Pergunta

13 respostass a esta questão

Posts Recomendados

  • 0

Sua dúvida é um tanto vaga, uma vez que a programação com sockets dá total liberdade para você definir o quê, onde, para quê e quando os dados serão enviados/recebidos. Por exemplo, o seu "verificar se alguém entrou no servidor usando winsock..." é extremamente relativo. O que é o seu "servidor"? Ele responde algo ao cliente que conecta (após a conexão estabelecida pelo winsock)? Ele mantém uma lista dos clientes conectados a ele? E o "algo pra quando alguém enviar uma informação usando winsock e não tiver ninguém pra receber, ele receber um aviso avisando q ninguém recebeu.." é ainda mais confuso. Quem pode ser o "alguém" nesse caso? Os clientes conectados ao servidor? O próprio servidor? Quem vai receber o aviso?

Acho que o ideal seria você explicar o que está fazendo e como, a fim de que possamos ajudar melhor. Lembre-se que tudo que o winsock faz é *enviar e receber dados* - como esses dados serão tratados/interpretados cabe a você decidir (e não temos a mínima idéia de como você organizou tudo).

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

eu estou fazendo uma espécie de chat, mas apenas para 2 pessoas...

bom, pro winsock aqui funcionar, uma pessoa tem q estar apta a receber uma conexão. essa pessoa vira o "servidor", e uma outra conecta no ip dessa pessoa...

o q eu quero é que quando uma pessoa esta esperando uma conexão, e ninguém conectou ainda, ela receba um aviso de q ninguém se conectou a ela ainda...

deu pra entender agora? laugh.gif

(é dificil explicar porque eu sei exatamente do q estou falando, então tudo pra mim parece simples)

vlw biggrin.gif

ah lembrei, aproveitando esse tópico, como eu faço pro textbox q mostra o chat ficar sempre mostrando a ultima mensagem enviada, ou seja, fica dando scroll down toda vez q uma msg for enviada..

falou

Link para o comentário
Compartilhar em outros sites

  • 0

ae.. eu dei uma olhada nesse site q você me passo, e ele me deu umas idéias, mas eu não consegui resolver o problema...

dexa eu explica exatamente:

quando uma pessoa A vai conectar na pessoa B, aparece um inputbox onde a pessoa A escreve o ip da pessoa B, para se conectar a ela... o q eu quero, é que quando a pessoa A tente se conectar a pessoa B, mas a pessoa B ainda não esteja pronta para receber a conexão, ou a pessoa A digite o ip errado, a pessoa A receba um aviso falando q a conexão falhou...

e quanto ao meu segundo problema, eu não achei nada parecido com o q eu preciso..

eu quero q quando o text ultrapassa o tamanho do textbox, eu quero q o scrollbar fique sempre na ultima msg enviada, no entando ele está sempre no começo do texto, ai para ver a ultima msg enviada, você tem q fica dando scrolldown sad.gif

falou biggrin.gif

Link para o comentário
Compartilhar em outros sites

  • 0
ae.. eu dei uma olhada nesse site q você me passo, e ele me deu umas idéias, mas eu não consegui resolver o problema...

dexa eu explica exatamente:

quando uma pessoa A vai conectar na pessoa B, aparece um inputbox onde a pessoa A escreve o ip da pessoa B, para se conectar a ela... o q eu quero, é que quando a pessoa A tente se conectar a pessoa B, mas a pessoa B ainda não esteja pronta para receber a conexão, ou a pessoa A digite o ip errado, a pessoa A receba um aviso falando q a conexão falhou...

e quanto ao meu segundo problema, eu não achei nada parecido com o q eu preciso..

eu quero q quando o text ultrapassa o tamanho do textbox, eu quero q o scrollbar fique sempre na ultima msg enviada, no entando ele está sempre no começo do texto, ai para ver a ultima msg enviada, você tem q fica dando scrolldown sad.gif

falou biggrin.gif

Quando você tentar conectar, deve existir um loop aí em algum lugar que fica esperando a conexão ser estabelecida, certo? Pois bem, isso deve estar sendo feito através da verificação do valor da propriedade State. Ela também te indicará se houve algum erro. Para um exemplo disso, dê uma olhada no código deste artigo: http://desenvolvedores.net/modules.php?nam...=article&sid=27

Quanto a textbox, experimente fazer...

Text1.SelStart = Len(Text1.Text)

... e você verá que a seleção vai para o final dela.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

ae...

bom, o textbox ta funcionando perfeitamente.. vlw biggrin.gif

agora qt ao winsock, lendo la o artigo eu fiz o seguinte script:

Private Sub Form_Load()
ip:
sIp = InputBox("IP a ser conectado:", "Cliente")
If sIp = "" Then GoTo ip

iPorta = "8084"
Winsock.Connect sIp, iPorta

Do While Winsock.State <> sckConnected
  DoEvents: DoEvents: DoEvents: DoEvents
  If Winsock.State = sckError Then
    MsgBox "Não existe nenhum servidor neste ip!", 64, "Ops!"
    GoTo ip
    Exit Do
  End If
Loop
End Sub

só q da uns pau mt esquisito... por exemplo, a mensagem de erro so aparece quando tem alguma letra no ip.. fora isso não volta erro nenhum... q q ta errado?

vlw biggrin.gif

Link para o comentário
Compartilhar em outros sites

  • 0
só q da uns pau mt esquisito... por exemplo, a mensagem de erro so aparece quando tem alguma letra no ip.. fora isso não volta erro nenhum... q q ta errado?

Fiz o teste aqui e aparece sim a mensagem quando se digita um IP não existente, só que depois de muito tempo (porque o Winsock é insistente e não desiste fácil biggrin.gif ). O que você pode fazer é colocar um contador de tempo ali para, após n segundos de tentativas, ele desistir e mostrar a mensagem.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

bom, eu tentei fazer como você falou, mas devido a meu pouco conhecimeto de vb, funcionou, mas não do jeito q eu queria... tipo eu queria q no form_load já verificasse, mas eu so consegui verificar depois q o form foi carregado...

tem como você falar como você pessou em usar um contador pra me dar ideias não? vlw biggrin.gif

Link para o comentário
Compartilhar em outros sites

  • 0

Com a função Time() ou Now() você obtém a hora atual. Isso você faz antes de começar a tentar conectar, guardando a hora inicial em uma variável. Depois, dentro do loop, você calcula a diferença entre o tempo atual e o tempo inicial (utilizando a função TimeSerial() ou TimeValue()). Se essa diferença (retornada em segundos) for maior que n segundos, você sai do loop e dá a mensagem. Sacou? wink.gif

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0
ae.. eu acho q agora eu vo consegui... só preciso saber um coisa... no inputbox q você escreve o ip, aparece pra clicar ok ou cancel... só q cancel não faz nada, se você clica nele, simplesmente volta pro inputbox... como eu faço pra definir o que cancel e o q ok faz?

Ué? O código abaixo não foi você que escreveu? Veja:

ip:
sIp = InputBox("IP a ser conectado:", "Cliente")
If sIp = "" Then GoTo ip

Ali você define um label (rótulo) chamado "ip" e pede uma entrada ao usuário por meio da InputBox(). O retorno dessa função é algo diferente de "" (ou seja, algo não-vazio) se ela digitar algo e pressionar o OK. Se ela aperta o Cancelar ou não digitar nada, o retorno será "" (vazio). Na linha do if você define: "se sIp for vazio então vá para o rótulo ip" e será isso que ele fará. Nesse if é que você pode decidir o que ele fará se o usuário pressionou o Cancelar. Sacou? wink.gif

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

Pessoal Vantando a duvida de winsock... aki neste tópico o William Rodrigues passou um tudo de um CHAT... ateh ai firmeza... eu fiz o CHAT e deu tudo CERTO.... Porem.... temtei fazer com 2 Clientes.... e ele deu pau.... o que eu devo auterar no codigo dakele chat para funcionar com varios Usuarios??? um usuario não precisa receber o que outro ecreve... pois na verdade a MSG que fou usar vem só do Server para o usuario.....

t+

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...