Acerca de problemas con Socket en .Net y VB6
Biblioteca de clases System.Net.Sockets
Dos ejemplos
1 Programa del lado del servidor (DateTimeServer.vb)
- - ------------------------------
Sistema de Importaciones
Sistema de Importaciones.Net
Importa System.Net.Sockets
Importa System.Text
Importa System.Threading
Importa System.Globalization
Clase pública DateTimeServer
Public Shared Sub Main()
Atenuar ahora como fecha
Atenuar strDateLine como cadena
Atenuar ASCII As Encoding = Encoding.ASCII
Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture
Pruebe
Dim tcpl As New TCPListener(13) 'En el puerto 13 Escuche
tcpl.Start()
Console.WriteLine("Esperando conexión del cliente")
Console.WriteLine("Presione Ctrl+C Salir... ")
While (True)
' Aceptar se bloqueará hasta que alguien se conecte
Dim s As Socket = tcpl.AcceptSocket()
' Obtiene la fecha y hora actuales y luego
' Concatenarlas en una cadena
now = DateTime.Now
strDateLine = now .ToShortDateString() + " " + now.ToLongTimeString()
' Convierte la cadena en una matriz de bytes y envíala
Dim byteDateLine() As Byte = ASCII.GetBytes( strDateLine.ToCharArray() )
s.Send(byteDateLine, byteDateLine.Length, SocketFlags.None)
s.Close()
Console.WriteLine( "{0} enviado ", strDateLine)
Finalizar mientras
Detectar socketError como SocketException
If (socketError.ErrorCode) = 10048 Then
Console.WriteLine("La conexión a este puerto falló. Hay otro servidor escuchando en este puerto.
")
Finalizar si
Finalizar intento
Finalizar sub
Finalizar clase
2. Servidor de adquisición de clientes -side time (Client.vb)
Importaciones System
Importaciones System.IO
Importaciones System.Net
Importaciones System.Net .Sockets
Importa System.Text
Cliente de clase pública
Subprincipal compartido público()
Atenuar tcpc como nuevo TCPClient()
Dim read(35) As Byte
Dim args As String() = Environment.GetCommandLineArgs()
Si (args.Length < 2) Entonces
Console.WriteLine("Especifique el nombre del servidor en la línea de comando")
Salir de Sub
Fin si
Atenuar servidor como String = args(1)
' Verificar que el servidor existe
Pruebe
DNS.GetHostByName(servidor)
Captura p>
Console.WriteLine("No se puede encontrar el servidor: {0}", servidor)
Salir de Sub
Finalizar intento
' Intente conectarse al servidor
tcpc.Connect(server,13)
' Obtener transmisión
Dim s As Stream
Probar p>
s = tcpc.GetStream()
Captura exc como InvalidOperationException
Console.WriteLine("No se puede conectar al servidor: {0}", servidor) p>
Salir Sub
Finalizar intento
' Leer la secuencia y convertirla a ASCII
Dim bytes As Integer = s.Read(read, 0, read.Length )
Dim Time As String = Encoding.ASCII.GetString(read)
' Mostrar datos
Console.WriteLine("{0 } Bytes recibidos", bytes)
Console.WriteLine("La fecha y hora actuales son: {0}", Hora)
tcpc.Close(
)
' Espere la respuesta del usuario para salir
Console.WriteLine("Presione la tecla Intro para salir")
Console.Read()
End Sub
End Class
3. Guarde estos dos archivos y luego ingrese a la herramienta de compilación proporcionada por .net---Símbolo del sistema de Visual Studio .NET 2003 p>
vbc.exe /target:exe /out:DateTimeServer.exe /r:System.dll DateTimeServer.vb
vbc.exe /target:exe /out:Client.exe /r: System.dll Client.vb
Después de una compilación exitosa, se generan dos archivos exe y se abre el programa DateTimeServer.exe en el servidor para monitorear las solicitudes de los clientes.
Escriba el MS- Línea de comando de DOS Ingrese el comando Client.exe Localhost
y verá el efecto