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.shufengxianlan.com/qtweb/news49/218049.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
广告
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源:
创新互联