Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - CH4ØZ

#31
buen estoy haciendo una aplicacion cliente-servidor, para no dejar todo un poco mas ordenado hice clases para los sockets, pero hay algo que no esta funcionando, xq el cliente dice que esta conectado, y no lo esta. aver si me pueden ayudar y decirme que estoy haciendo mal. gracias


Cliente:
Código (vbnet) [Seleccionar]
Public Class Connection

    Public Class Client
        Private _Server As String
        Private _Port As Integer
        Private c_Socket As New TcpClient
        Private c_Stream As NetworkStream

#Region "Props"

        Public Property Server() As String
            Get
                Server = _Server
            End Get
            Set(ByVal value As String)
                _Server = value
            End Set
        End Property

        Public Property Port() As Integer
            Get
                Port = _Port
            End Get
            Set(ByVal value As Integer)
                _Port = value
            End Set
        End Property

#End Region

#Region "Eventos"

#Region "Declaracion(delegados)"

        Public Delegate Sub _OnConnect(ByVal server As String, ByVal port As Integer)
        Public Delegate Sub _OnDisconect()
        Public Delegate Sub _OnError(ByVal Info As String)
        Public Delegate Sub _OnSendComplete()

#End Region

#Region "Declaracion(Evento)"

        Public Event OnConnect As _OnConnect
        Public Event OnDisconnect As _OnDisconect
        Public Event OnError As _OnError
        Public Event OnSendComplete As _OnSendComplete

#End Region

#End Region

#Region "Funciones"

        Public Sub Connect(ByVal server As String, ByVal port As Integer)
            _Server = server
            _Port = port
            Connect()
        End Sub

        Public Sub Connect()
            Try
                c_Socket.Connect(_Server, _Port)
                c_Stream = c_Socket.GetStream()
                RaiseEvent OnConnect(_Server, _Port)
            Catch ex As Exception
                RaiseEvent OnError(ex.Message)
            End Try
        End Sub

        Public Sub Disconnect()
            Try
                c_Socket.Close()
                c_Stream.Close()
                RaiseEvent OnDisconnect()
            Catch ex As Exception
                RaiseEvent OnError(ex.Message)
            End Try
        End Sub

        Public Sub Send(ByVal Data As String)
            Try
                Dim Buffer As Byte()
                Buffer = Encoding.ASCII.GetBytes(Data)
                c_Stream.Write(Buffer, 0, Buffer.Length)
                c_Stream.Flush()
                RaiseEvent OnSendComplete()
            Catch ex As Exception
                RaiseEvent OnError(ex.Message)
            End Try
        End Sub

#End Region

    End Class

End Class


Servidor:
Código (vbnet) [Seleccionar]
Public Class Connection

    Public Class Server

        Private _Port As Integer
        Private s_Listener As TcpListener
        Private s_Socket As Socket
        Private s_Timer As New Timers.Timer(50)
        Private b_Listen As Boolean = False

#Region "Eventos"

#Region "Declaracion(delegados)"

        Public Delegate Sub _OnListening(ByVal port As Integer)
        Public Delegate Sub _OnStop()
        Public Delegate Sub _OnAccept(ByVal server As String)
        Public Delegate Sub _RecievedData(ByVal Data As String, ByVal bytes As Integer)
        Public Delegate Sub _OnError(ByVal Info As String)

#End Region

#Region "Declaracion(Evento)"

        Public Event OnStartListening As _OnListening
        Public Event OnStopListening As _OnStop
        Public Event OnConnectionAccept As _OnAccept
        Public Event OnDataRecieved As _RecievedData
        Public Event OnError As _OnError

#End Region

#End Region

#Region "Props"

        Public Property Port() As Integer
            Get
                Port = _Port
            End Get
            Set(ByVal value As Integer)
                _Port = value
            End Set
        End Property

#End Region

#Region "Funciones"

        Public Sub StartListen(ByVal port As Integer)
            _Port = port
            StartListen()
        End Sub

        Public Sub StartListen()
            Try
                Dim _server As IPAddress = IPAddress.Parse("127.0.0.1")
                s_Listener = New TcpListener(_server, _Port)
                s_Listener.Start()
                b_Listen = True
                AddHandler s_Timer.Elapsed, AddressOf s_Timer_Tick
                RaiseEvent OnStartListening(_Port)
            Catch ex As Exception
                RaiseEvent OnError(ex.Message)
            End Try
        End Sub

        Public Sub StopListen()
            Try
                b_Listen = False
                s_Listener.Stop()
                s_Socket.Close()
                RemoveHandler s_Timer.Elapsed, AddressOf s_Timer_Tick
                RaiseEvent OnStopListening()
            Catch ex As Exception
                RaiseEvent OnError(ex.Message)
            End Try
        End Sub

#End Region

#Region "Internal"

        Private Sub s_Timer_Tick(ByVal sender As Object, ByVal e As System.Timers.ElapsedEventArgs)
            Dim Data As Byte(), b As Boolean = False
            Data = Nothing
            While b_Listen = True
                s_Socket = s_Listener.AcceptSocket()
                If b = False Then
                    s_Socket.SendTimeout = 100
                    b = True
                End If
                RaiseEvent OnConnectionAccept(s_Socket.RemoteEndPoint.ToString)
                s_Socket.Receive(Data, s_Socket.ReceiveBufferSize, SocketFlags.None)
                RaiseEvent OnDataRecieved(Encoding.ASCII.GetString(Data), Data.Length)
            End While
        End Sub

#End Region

    End Class

End Class
#32
.NET (C#, VB.NET, ASP) / BORRAR
19 Julio 2011, 02:16 AM
BORRAR
#33
fijate si reinstalando el vs funciona (desinstala tambien el framework).
#34
usa las apis findwindow y findwindowex
#35
la imagen q te mostre es la que aparece cuando creas un nuevo proyecto (x lo menos el el vs 2008, que es el q yo uso, pero deberia ser = o similar en el 2010)
#36
no instales otro framework, solo cambia la version con la q compilas. asi
#37
Cita de: XXX-ZERO-XXX en  9 Febrero 2011, 20:58 PM
No tengo ese visual studio pero crea otro proyecto nuevo y sin tocar nada pones el textbox y el boton y le das doble click al boton y pones el codigo:  MsgBox("HOLA " & TextBox1.Text)
y tendria q andar :S
yo tengo el vs2008, pero abri = el proyecto (buscas dentro de la carpeta del proyecto luego, donde estan los formularios y demas, el archivo con extensión "vsp", o Visual Basic Proyect File, y lo abre :P)

sobre el problema, a mi me salen varios errores en el designer del form. intenta hacer lo que dijo zero.
#38
supongo q esto deberia funcionar
declaracion de la api, y constantes:
Código (vbnet) [Seleccionar]
Private Declare Ansi Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As String) As Integer

Const WM_CHAR = &H102


uso:
Código (vbnet) [Seleccionar]
SendMessage(windowhandle, WM_CHAR, Keys.N, 0)
'Nota: WindowHandle es el handle de la ventana/control a la/al cual queres enviarle esa tecla.
#39
.NET (C#, VB.NET, ASP) / borrar este post
9 Febrero 2011, 14:02 PM
borrar
#40
solucion rapida (supongo):
debajo del header de tu load (del formulario con el q inicies el programa)
Código (vbnet) [Seleccionar]
On Error Resume Next
si no, postea el load del formulario con el q inicias y buscamos el error.