VB.Net by API/System.Net.Sockets/Socket — различия между версиями
Admin (обсуждение | вклад) м (1 версия) |
(нет различий)
|
Текущая версия на 12:50, 26 мая 2010
New Socket
Imports System.Net.Sockets
Imports System.Net
Imports System.Threading
Public Class Tester
Dim Shared mySocket As Socket
Public Shared Sub Main
Dim myThread As New Thread(New ThreadStart(AddressOf StartConnection))
myThread.Start()
End Sub
Private Shared Sub StartConnection()
Try
mySocket = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
mySocket.Connect(New IPEndPoint(IPAddress.Parse("192.168.1.100"), 12335))
Catch ex As SocketException
Console.WriteLine(ex.Message)
End Try
End Sub
End Class
Socket.Bind
Imports System.Threading
Imports System.Net
Imports System.Net.Sockets
Public Class ServerSocket
Public Shared Sub Main()
Try
Dim serverSocket As New Socket( _
AddressFamily.InterNetwork, _
SocketType.Stream, _
ProtocolType.Tcp)
Dim serverIP As IPAddress = IPAddress.Parse("127.0.0.1")
Dim Port As String = "80"
Dim serverhost As New IPEndPoint(serverIP, Int32.Parse(Port))
serverSocket.Bind(serverhost)
serverSocket.Listen(50)
Dim lc As New ListenClient(serverSocket)
Dim serverthread As Threading.Thread
serverthread = New Thread(New Threading.ThreadStart(AddressOf lc.ServerThreadProc))
serverthread.Start()
Catch ex As Exception
Console.WriteLine(ex.StackTrace.ToString())
End Try
End Sub
End Class
Public Class ListenClient
Private serverSocket As System.Net.Sockets.Socket
Private clientSocket As System.Net.Sockets.Socket
Public Sub New(ByVal serverSocket As System.Net.Sockets.Socket)
Me.serverSocket = serverSocket
End Sub
Public Sub ServerThreadProc()
Do While True
Try
Dim clientSocket As Socket = serverSocket.Accept()
Dim clientInfo As IPEndPoint = CType( _
clientSocket.RemoteEndPoint, _
IPEndPoint)
Dim serverInfo As IPEndPoint = CType( _
serverSocket.LocalEndPoint, _
IPEndPoint)
Console.WriteLine("Client: " + clientInfo.Address.ToString() + ":" + clientInfo.Port.ToString())
Console.WriteLine("Server: " + serverInfo.Address.ToString() + ":" + serverInfo.Port.ToString())
Catch ex As Exception
Console.WriteLine(ex.StackTrace.ToString())
End Try
Loop
End Sub
End Class
Socket.Connect
Imports System
Imports System.IO
Imports System.Net
Imports System.Net.Sockets
Imports System.Text
Public Class DateTimeClient
Public Shared Sub Main()
Dim args As String() = Environment.GetCommandLineArgs()
Dim serverHost As String = "127.0.0.1"
Dim hostadd As IPAddress = Dns.Resolve(serverHost).AddressList(0)
Dim EPhost As New IPEndPoint(hostadd, 13)
Dim clientSocket As New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
Try
clientSocket.Connect(EPhost)
Catch ex As Exception
Console.WriteLine(ex.ToString())
End Try
Try
Dim recvbytes(1024) As Byte
Dim i As Integer = clientSocket.Receive(recvbytes, 0, clientSocket.Available, SocketFlags.None)
Dim datetime As String = Encoding.ASCII.GetString(recvbytes, 0, i)
Console.WriteLine("Receive {0} bytes.", i)
Console.WriteLine("Current server date/Time: {0}", datetime)
clientSocket.Shutdown(SocketShutdown.Both)
clientSocket.Close()
Catch ec As Exception
Console.WriteLine(ec.StackTrace.ToString())
Exit Sub
End Try
End Sub
End Class
Socket.Listen
Imports System.Threading
Imports System.Net
Imports System.Net.Sockets
Public Class ServerSocket
Public Shared Sub Main()
Try
Dim serverSocket As New Socket( _
AddressFamily.InterNetwork, _
SocketType.Stream, _
ProtocolType.Tcp)
Dim serverIP As IPAddress = IPAddress.Parse("127.0.0.1")
Dim Port As String = "80"
Dim serverhost As New IPEndPoint(serverIP, Int32.Parse(Port))
serverSocket.Bind(serverhost)
serverSocket.Listen(50)
Dim lc As New ListenClient(serverSocket)
Dim serverthread As Threading.Thread
serverthread = New Thread(New Threading.ThreadStart(AddressOf lc.ServerThreadProc))
serverthread.Start()
Catch ex As Exception
Console.WriteLine(ex.StackTrace.ToString())
End Try
End Sub
End Class
Public Class ListenClient
Private serverSocket As System.Net.Sockets.Socket
Private clientSocket As System.Net.Sockets.Socket
Public Sub New(ByVal serverSocket As System.Net.Sockets.Socket)
Me.serverSocket = serverSocket
End Sub
Public Sub ServerThreadProc()
Do While True
Try
Dim clientSocket As Socket = serverSocket.Accept()
Dim clientInfo As IPEndPoint = CType( _
clientSocket.RemoteEndPoint, _
IPEndPoint)
Dim serverInfo As IPEndPoint = CType( _
serverSocket.LocalEndPoint, _
IPEndPoint)
Console.WriteLine("Client: " + clientInfo.Address.ToString() + ":" + clientInfo.Port.ToString())
Console.WriteLine("Server: " + serverInfo.Address.ToString() + ":" + serverInfo.Port.ToString())
Catch ex As Exception
Console.WriteLine(ex.StackTrace.ToString())
End Try
Loop
End Sub
End Class
Socket.Receive
Imports System
Imports System.IO
Imports System.Net
Imports System.Net.Sockets
Imports System.Text
Public Class DateTimeClient
Public Shared Sub Main()
Dim args As String() = Environment.GetCommandLineArgs()
Dim serverHost As String = "127.0.0.1"
Dim hostadd As IPAddress = Dns.Resolve(serverHost).AddressList(0)
Dim EPhost As New IPEndPoint(hostadd, 13)
Dim clientSocket As New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
Try
clientSocket.Connect(EPhost)
Catch ex As Exception
Console.WriteLine(ex.ToString())
End Try
Try
Dim recvbytes(1024) As Byte
Dim i As Integer = clientSocket.Receive(recvbytes, 0, clientSocket.Available, SocketFlags.None)
Dim datetime As String = Encoding.ASCII.GetString(recvbytes, 0, i)
Console.WriteLine("Receive {0} bytes.", i)
Console.WriteLine("Current server date/Time: {0}", datetime)
clientSocket.Shutdown(SocketShutdown.Both)
clientSocket.Close()
Catch ec As Exception
Console.WriteLine(ec.StackTrace.ToString())
Exit Sub
End Try
End Sub
End Class