scorpio 7 Denunciar post Postado Outubro 14, 2008 Salve pessoal! To começando a aprender Sockets, mas ele não conecta com outro computador, da o erro abaixo: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond 192.168.99.146:9999 Quando eu ponho "localhost" ou "127.0.0.1", ele da a mensagem "Conectou". Firewall desativado; Ping da máquina funciona; O IP está correto; Alguém tem alguma idéia do que seja ? Código do "servidor" Imports System.Net.Sockets Module Module1 Dim ns As NetworkStream Dim ActiveClients(0) As TcpClient Sub Main() Dim TCPListen As TcpListener = New TcpListener(9999) TCPListen.Start() Console.WriteLine("Servidor iniciado...") Dim Running As Boolean = True, i As Integer Do While Running System.Threading.Thread.Sleep(1) If (TCPListen.Pending) Then ReDim Preserve ActiveClients(ActiveClients.GetUpperBound(0) + 1) ActiveClients(ActiveClients.GetUpperBound(0)) = New TcpClient() ActiveClients(ActiveClients.GetUpperBound(0)) = TCPListen.AcceptTcpClient ns = ActiveClients(ActiveClients.GetUpperBound(0)).GetStream Console.WriteLine("Conectou") End If Try For i = 1 To ActiveClients.GetUpperBound(0) If (ActiveClients(i).GetStream.DataAvailable) Then ns = ActiveClients(i).GetStream If ns.CanRead Then Dim bytes(ActiveClients(i).ReceiveBufferSize) As [Byte] '= Text.Encoding.UTF8.GetBytes("aoooooooo") ns.Read(bytes, 0, CInt(ActiveClients(i).ReceiveBufferSize)) Dim received As String = System.Text.Encoding.Default.GetChars(bytes) 'MsgBox(received) Console.WriteLine(" ", received) EnviaMsg(i, received) 'Console.SetOut(New System.IO.StringWriter(System.Text.Encoding.Default.GetChars(bytes))) 'Dim bytess As [Byte]() = System.Text.Encoding.Default.GetBytes(Console.ReadLine) 'ns.Write(bytess, 0, CInt(bytess.Length)) End If End If Next Catch ex As Exception End Try Loop TCPListen.Stop() End Sub Public Sub EnviaMsg(ByVal Emitente As Integer, ByVal Msg As String) For i As Integer = 1 To ActiveClients.GetUpperBound(0) If (Not Emitente = i) Then ns = ActiveClients(i).GetStream Dim bytess As [Byte]() = System.Text.Encoding.Default.GetBytes(Msg) ns.Write(bytess, 0, CInt(bytess.Length)) End If Next End Sub End Module Código do cliente: Imports System.Net.Sockets Public Class Form1 Dim TCPCliente As TcpClient Dim ns As NetworkStream Public tr As System.Threading.Thread Delegate Sub MudaValorCallBack(ByRef TXT As TextBox, ByVal valor As String) Public Sub MudaValor(ByRef TXT As TextBox, ByVal valor As String) If (Me.InvokeRequired) Then Dim CallBack As MudaValorCallBack = New MudaValorCallBack(AddressOf MudaValor) Me.Invoke(CallBack, TXT, valor) Else TXT.Text = valor End If End Sub Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load TCPCliente = New TcpClient(InputBox("Digita o IP"), 9999) 'TCPCliente.Connect() ns = TCPCliente.GetStream tr = New System.Threading.Thread(AddressOf RecebeMensagens) tr.IsBackground = True tr.Start() End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click If ns.CanWrite Then Dim bytes As [Byte]() = System.Text.Encoding.Default.GetBytes(TextBox1.Text) ns.Write(bytes, 0, bytes.Length) End If End Sub Private Sub RecebeMensagens() While True Try If ns.CanRead Then Dim bytes(TCPCliente.ReceiveBufferSize) As [Byte] ns.Read(bytes, 0, CInt(TCPCliente.ReceiveBufferSize)) Dim s As String = CStr(System.Text.Encoding.Default.GetChars(bytes)) MudaValor(TextBox1, s) End If Catch ex As Exception End Try End While End Sub End Class Abraços! Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Outubro 14, 2008 Se conecta em sua máquina, só pode ser algo envolvendo permissão. Já tentou trocar de porta? Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
scorpio 7 Denunciar post Postado Outubro 15, 2008 Troquei, mas sem sucesso. Achei que podia ser por causa de um computador ser Vista e o outro XP, coloquei o programa em dois computadores XP e não funcionou. O estranho é que eu peguei um componente WinSock (o mesmo do VB6) e consegui fazer conectar. Mas não queria usar ele. Com ele vai dar muito trabalho pra fazer mais de uma conexão. Sei lá, vo continua procurando vejo se acho algo, se achar posto aqui. Abraços! Compartilhar este post Link para o post Compartilhar em outros sites