CHAT

MOUSER 24/03/2016 21:33:12
#459873
Citação:


Você precisa importar o namespace System.Net.


Obrigado DS2T, problema resolvido imediato.
KERPLUNK 24/03/2016 21:34:47
#459874
Vou dizer novamente, concentre-se no server. Seja por Sockets ou WebAPI, o server é que é a chave não o client.
Uma vez que o server esteja pronto, você pode testar com outras ferramentas, até mesmo um telnet e depois resolver a sua aplicação cliente.
MOUSER 24/03/2016 21:37:51
#459875
Vou dar uma olhada também Kurtgu!

Continuando o sistema, se eu criar um banco de dados com uma tabela de login, registrando o Nome de usuario e senha, se encontrar os mesmos que foi digitado na janela de login, ele importa o nome de usuario para o nome que vai ser apresentado na janela? Pois estou pensando usar o proprio computador da pessoa como servidor, juntar o modulo com o chat para iniciar pesquisar o usuario e senha na tabela e por fim dar inicio a conversa.
MOUSER 24/03/2016 21:41:16
#459876
Sim Kerp, vou usar o proprio cliente como server, (como mencionei acima), assim da para testar em casa conforme o progresso, como meu pai e meu irmão tem seu proprio computador, ao terminar o server, vou começar a desenvolver o Chat, mas meu foco atual é o server. Eu segui as instruções do site e corrigi o que nosso amigo DS2T disse em relação a importação. O Modulo ficou exatamente assim:

Citação:


Imports System.Net.Sockets
Imports System.Text
Imports System.Net
Module Module1
Dim listaClientes As New Hashtable
Sub Main()
Dim enderecoLocal As IPAddress = IPAddress.Parse([Ô]127.0.0.1[Ô])
Dim serverSocket As New TcpListener(enderecoLocal, 8888)
Dim clientSocket As TcpClient = Nothing
Dim contador As Integer
serverSocket.Start()
Mensagem([Ô]Servidor Chat Iniciado ...[Ô])
contador = 0
While (True)
contador += 1
clientSocket = serverSocket.AcceptTcpClient()
Dim bytesFrom(10024) As Byte
Dim dadosDoCliente As String
Dim networkStream As NetworkStream = clientSocket.GetStream()
networkStream.Read(bytesFrom, 0, CInt(clientSocket.ReceiveBufferSize))
dadosDoCliente = Encoding.ASCII.GetString(bytesFrom)
dadosDoCliente = dadosDoCliente.Substring(0, dadosDoCliente.IndexOf([Ô]$[Ô]))
listaClientes(dadosDoCliente) = clientSocket
broadcast(dadosDoCliente + [Ô] Entrou [Ô], dadosDoCliente, False)
Mensagem(dadosDoCliente + [Ô] Entrou na Sala [Ô])
Dim cliente As New tratarCliente
cliente.iniciaCliente(clientSocket, dadosDoCliente, listaClientes)
End While
clientSocket.Close()
serverSocket.Stop()
Mensagem([Ô]sair[Ô])
Console.ReadLine()
End Sub
Sub Mensagem(ByVal texto As String)
texto.Trim()
Console.WriteLine([Ô] >> [Ô] + texto)
End Sub
Private Sub broadcast(ByVal Mensagem As String, ByVal nomeUsuario As String, ByVal flag As Boolean)
Dim Item As DictionaryEntry
For Each Item In listaClientes
Dim broadcastSocket As TcpClient
broadcastSocket = CType(Item.Value, TcpClient)
Try
Dim broadcastStream As NetworkStream = broadcastSocket.GetStream()
Dim broadcastBytes As [Byte]()
If flag = True Then
broadcastBytes = Encoding.ASCII.GetBytes(nomeUsuario + [Ô] diz : [Ô] + Mensagem)
Else
broadcastBytes = Encoding.ASCII.GetBytes(Mensagem)
End If
broadcastStream.Write(broadcastBytes, 0, broadcastBytes.Length)
broadcastStream.Flush()
Catch ex As Exception
MsgBox(ex.Message)
End Try
Next
End Sub
Public Class tratarCliente
Dim clientSocket As TcpClient
Dim clNo As String
Dim listaClientes As Hashtable
Public Sub iniciaCliente(ByVal inClientSocket As TcpClient, ByVal clineNo As String, ByVal cList As Hashtable)
Me.clientSocket = inClientSocket
Me.clNo = clineNo
Me.listaClientes = cList
Dim ctThread As Threading.Thread = New Threading.Thread(AddressOf doChat)
ctThread.Start()
End Sub
Private Sub doChat()
Dim contadorRequisicao As Integer
Dim bytesFrom(10024) As Byte
Dim dadosDoCliente As String
Dim rContador As String
contadorRequisicao = 0
While (True)
Try
contadorRequisicao = contadorRequisicao + 1
Dim networkStream As NetworkStream = clientSocket.GetStream()
networkStream.Read(bytesFrom, 0, CInt(clientSocket.ReceiveBufferSize))
dadosDoCliente = System.Text.Encoding.ASCII.GetString(bytesFrom)
dadosDoCliente = dadosDoCliente.Substring(0, dadosDoCliente.IndexOf([Ô]$[Ô]))
Mensagem([Ô]Cliente - [Ô] + clNo + [Ô] : [Ô] + dadosDoCliente)
rContador = Convert.ToString(contadorRequisicao)
broadcast(dadosDoCliente, clNo, True)
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End While
End Sub
End Class
End Module

KERPLUNK 24/03/2016 21:51:08
#459878
Você está sabendo que mutos provedores não dão mais suporte à IPv4, não é? E os que ainda dão, estão migrando para IPv6...
MOUSER 24/03/2016 21:59:37
#459880
Deu tudo certo, mas algo deu errado! Começar a re ler o que foi passado para confirmar se não faltou nada!
MOUSER 24/03/2016 22:01:34
#459881
Citação:

Você está sabendo que mutos provedores não dão mais suporte à IPv4, não é? E os que ainda dão, estão migrando para IPv6...



No caso, como faria a alteração para o IPv6 Kerp? Não conheço muito mas quero poder conhecer melhor!
MOUSER 24/03/2016 22:04:29
#459882
O erro da imagem acima, já foi corrigido, acabei de identificar. Agora só falta eu alterar o IPv4 para o IPv6. Já pensando no suporte que nosso amigo Kerp disse. A cada execução eu faço a leitura da rotina que é feita, deste o inicio da execução do projeto, até o momento de enviar a mensagem. Espero que essa alteração seja possivel e que os próximos testes ocorra tudo bem como tem ido até agora.
KERPLUNK 24/03/2016 22:17:19
#459887
Vou tentar fazer uma analogia:
Imagine que você é um carteiro e tem um monte de cartas para entregar. Como ficaria mais fácil fazer seu trabalho? Cartas com endereço, logradouro e número ou cartas contendo coordenadas de GPS? Pense nisso um pouco.

O servidor do seu chat é quem vai fazer a distribuição das mensagens, você não vai conectar client à client, à menos que você queira basear sua aplicação no padrão P2P e aí a coisa complica um bocado. Você vai fazer um server, os clients se conectam nele. Alguns clients vão estar com autenticados pelos seus respectivos ISP[ô]s com IPv4 e outros com IPv6. Se você fizer sua aplicação baseada em sockets, vai ter que necessariamente prover acesso para ambos e isso vai dificultar sua vida. Depois de pronto, você vai ter que ter algum lugar na nuvem para hospedar sua aplicação e se você desenvolveu o seu server por sockets, vai ter que pagar uma máquina dedicada para poder fazer a publicação dele.
Já se você fizer uma WebAPI, você não terá que se preocupar com o tipo de autenticação de rede do seus clients, consegue até mesmo hospedagem gratuita(para pequenas aplicações, como é seu caso) e ainda deixa seu projeto pronto para qualquer tipo de client. Você pode usar a mesma estrutura da WebAPI que eu passo nos vídeos e usar a mesma idéia para o client. A única diferença seria a implementação de notificações PUSH, mas isso é bem simples de ser feito.
Página 2 de 5 [45 registro(s)]
Tópico encerrado , respostas não são mais permitidas