VB.NET 应用范围非常广泛。我们可以在VB.NET环境中进行一些特定语言的编写。下面就来看一下VB.NET Socket编程的相关方法。一直以来很想学习Socket编程方面的应用,比如怎样通过Socket编程实现单片机与PC的TCP连接通信。在单片机嵌入网卡芯片与PC进行连接通信,实现PC的web方式对单片机所控制的设备的状态管理,例如智能家居方面的应用。#t#

创新互联主要从事成都做网站、成都网站制作、网页设计、企业做网站、公司建网站等业务。立足成都服务薛城,10多年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:028-86922220
下面通过例子来学习VB.NET Socket编程类的应用,下面的程序是服务器中的代码实现:
Visual Basic ---tcpserver
- Imports System  
- Imports System.Net  
- Imports System.Net.Sockets  
- Imports System.Text  
- Imports System.Threading  
- Imports Microsoft.VisualBasic  
- ' State object for reading client 
 data asynchronously
- Public Class StateObject  
- ' Client socket.  
- Public workSocket As Socket = Nothing 
- ' Size of receive buffer.  
- Public Const BufferSize As Integer = 1024 
- ' Receive buffer.  
- Public buffer(BufferSize) As Byte  
- ' Received data string.  
- Public sb As New StringBuilder  
- End Class 'StateObject  
- Public Class AsynchronousSocket
 Listener
- ' Thread signal.  
- Public Shared allDone As New Manual
 ResetEvent(False)
- ' This server waits for a connection 
 and then uses asychronous operations to
- ' accept the connection, get data from 
 the connected client,
- ' echo that data back to the 
 connected client.
- ' It then disconnects from the 
 client and waits for another client.
- Public Shared Sub Main()  
- ' Data buffer for incoming data.  
- Dim bytes() As Byte = New [Byte](1023) {}  
- ' Establish the local endpoint for the socket.  
- Dim ipHostInfo As IPHostEntry = 
 Dns.Resolve(Dns.GetHostName())
- Dim ipAddress As IPAddress = 
 ipHostInfo.AddressList(0)
- Dim localEndPoint As New IPEndPoint
 (ipAddress, 11000)
- ' Create a TCP/IP socket.  
- Dim listener As New Socket(AddressFamily.
 InterNetwork, SocketType.Stream, ProtocolType.Tcp)
- ' Bind the socket to the local endpoint 
 and listen for incoming connections.
- listener.Bind(localEndPoint)  
- listener.Listen(100)  
- While True  
- ' Set the event to nonsignaled state.  
- allDone.Reset()  
- ' Start an asynchronous socket to listen 
 for connections.
- Console.WriteLine("Waiting for a connection...")  
- listener.BeginAccept(New AsyncCallback
 (AddressOf AcceptCallback), listener)
- ' Wait until a connection is made and 
 processed before continuing.
- allDone.WaitOne()  
- End While  
- End Sub 'Main  
- Public Shared Sub AcceptCallback(ByVal ar 
 As IAsyncResult)
- ' Get the socket that handles the client request.  
- Dim listener As Socket = CType(ar.AsyncState, Socket)  
- ' End the operation.  
- Dim handler As Socket = listener.EndAccept(ar)  
- ' Create the state object for the async receive.  
- Dim state As New StateObject  
- state.workSocket = handler 
- handler.BeginReceive(state.buffer, 0, StateObject.
 BufferSize, 0, New AsyncCallback(AddressOf
 ReadCallback), state)
- End Sub 'AcceptCallback  
- Public Shared Sub ReadCallback(ByVal ar As 
 IAsyncResult)
- Dim content As StringString = String.Empty  
- ' Retrieve the state object and the handler socket  
- ' from the asynchronous state object.  
- Dim state As StateObject = CType(ar.AsyncState, 
 StateObject)
- Dim handler As Socket = state.workSocket  
- ' Read data from the client socket.   
- Dim bytesRead As Integer = handler.EndReceive(ar)  
- If bytesRead > 0 Then  
- ' There might be more data, so store the data 
 received so far.
- state.sb.Append(Encoding.ASCII.GetString
 (state.buffer, 0, bytesRead))
- ' Check for end-of-file tag. If it is not there, read   
- ' more data.  
- content = state.sb.ToString()  
- If content.IndexOf("") > -1 Then  
- ' All the data has been read from the   
- ' client. Display it on the console.  
- Console.WriteLine("Read {0} bytes from socket. "
 + vbLf + " Data : {1}", content.Length, content)
- ' Echo the data back to the client.  
- Send(handler, content)  
- Else  
- ' Not all data received. Get more.  
- handler.BeginReceive(state.buffer, 0, StateObject.
 BufferSize, 0, New AsyncCallback(AddressOf
 ReadCallback), state)
- End If  
- End If  
- End Sub 'ReadCallback  
- Private Shared Sub Send(ByVal handler As Socket, 
 ByVal data As String)
- ' Convert the string data to byte data using 
 ASCII encoding.
- Dim byteData As Byte() = Encoding.ASCII.GetBytes(data)  
- ' Begin sending the data to the remote device.  
- handler.BeginSend(byteData, 0, byteData.Length, 0, 
 New AsyncCallback(AddressOf SendCallback), handler)
- End Sub 'Send  
- Private Shared Sub SendCallback(ByVal ar As IAsyncResult)  
- ' Retrieve the socket from the state object.  
- Dim handler As Socket = CType(ar.AsyncState, Socket)  
- ' Complete sending the data to the remote device.  
- Dim bytesSent As Integer = handler.EndSend(ar)  
- Console.WriteLine("Sent {0} bytes to client.", bytesSent)  
- handler.Shutdown(SocketShutdown.Both)  
- handler.Close()  
- ' Signal the main thread to continue.  
- allDone.Set()  
- End Sub 'SendCallback  
- End Class 'AsynchronousSocketListener 
VB.NET Socket编程的具体用法就为大家介绍到这里。
            
            新闻名称:VB.NETSocket编程实际操作方法介绍            
            文章网址:
http://www.cdxtjz.cn/article/dhsdcsj.html