小编给大家分享一下VB.NET Socket编程的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!
下面通过例子来学习VB.NET Socket编程类的应用,下面的程序分别分服务器和客户端两部分:
ImportsSystem ImportsSystem.Net ImportsSystem.Net.Sockets ImportsSystem.Text ImportsSystem.Threading ImportsMicrosoft.VisualBasic 'Stateobjectforreadingclientdataasynchronously PublicClassStateObject 'Clientsocket. PublicworkSocketAsSocket=Nothing 'Sizeofreceivebuffer. PublicConstBufferSizeAsInteger=1024 'Receivebuffer. Publicbuffer(BufferSize)AsByte 'Receiveddatastring. PublicsbAsNewStringBuilder EndClass'StateObject PublicClassAsynchronousSocketListener 'Threadsignal. PublicSharedallDoneAsNewManualResetEvent(False) 'Thisserverwaitsforaconnectionandthenusesasychronousoperationsto 'accepttheconnection,getdatafromtheconnectedclient, 'echothatdatabacktotheconnectedclient. 'Itthendisconnectsfromtheclientandwaitsforanotherclient. PublicSharedSubMain() 'Databufferforincomingdata. Dimbytes()AsByte=New[Byte](1023){} 'Establishthelocalendpointforthesocket. DimipHostInfoAsIPHostEntry=Dns.Resolve(Dns.GetHostName()) DimipAddressAsIPAddress=ipHostInfo.AddressList(0) DimlocalEndPointAsNewIPEndPoint(ipAddress,11000) 'CreateaTCP/IPsocket. DimlistenerAsNewSocket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp) 'Bindthesockettothelocalendpointandlistenforincomingconnections. listener.Bind(localEndPoint) listener.Listen(100) WhileTrue 'Settheeventtononsignaledstate. allDone.Reset() 'Startanasynchronoussockettolistenforconnections. Console.WriteLine("Waitingforaconnection...") listener.BeginAccept(NewAsyncCallback(AddressOfAcceptCallback),listener) 'Waituntilaconnectionismadeandprocessedbeforecontinuing. allDone.WaitOne() EndWhile EndSub'Main PublicSharedSubAcceptCallback(ByValarAsIAsyncResult) 'Getthesocketthathandlestheclientrequest. DimlistenerAsSocket=CType(ar.AsyncState,Socket) 'Endtheoperation. DimhandlerAsSocket=listener.EndAccept(ar) 'Createthestateobjectfortheasyncreceive. DimstateAsNewStateObject state.workSocket=handler handler.BeginReceive(state.buffer,0,StateObject.BufferSize,0,NewAsyncCallback(AddressOfReadCallback),state) EndSub'AcceptCallback PublicSharedSubReadCallback(ByValarAsIAsyncResult) DimcontentAsString=String.Empty 'Retrievethestateobjectandthehandlersocket 'fromtheasynchronousstateobject. DimstateAsStateObject=CType(ar.AsyncState,StateObject) DimhandlerAsSocket=state.workSocket 'Readdatafromtheclientsocket. DimbytesReadAsInteger=handler.EndReceive(ar) IfbytesRead>0Then 'Theremightbemoredata,sostorethedatareceivedsofar. state.sb.Append(Encoding.ASCII.GetString(state.buffer,0,bytesRead)) 'Checkforend-of-filetag.Ifitisnotthere,read 'moredata. content=state.sb.ToString() Ifcontent.IndexOf("<EOF>")>-1Then 'Allthedatahasbeenreadfromthe 'client.Displayitontheconsole. Console.WriteLine("Read{0}bytesfromsocket."+vbLf+"Data:{1}",content.Length,content) 'Echothedatabacktotheclient. Send(handler,content) Else 'Notalldatareceived.Getmore. handler.BeginReceive(state.buffer,0,StateObject.BufferSize,0,NewAsyncCallback(AddressOfReadCallback),state) EndIf EndIf EndSub'ReadCallback PrivateSharedSubSend(ByValhandlerAsSocket,ByValdataAsString) 'ConvertthestringdatatobytedatausingASCIIencoding. DimbyteDataAsByte()=Encoding.ASCII.GetBytes(data) 'Beginsendingthedatatotheremotedevice. handler.BeginSend(byteData,0,byteData.Length,0,NewAsyncCallback(AddressOfSendCallback),handler) EndSub'Send PrivateSharedSubSendCallback(ByValarAsIAsyncResult) 'Retrievethesocketfromthestateobject. DimhandlerAsSocket=CType(ar.AsyncState,Socket) 'Completesendingthedatatotheremotedevice. DimbytesSentAsInteger=handler.EndSend(ar) Console.WriteLine("Sent{0}bytestoclient.",bytesSent) handler.Shutdown(SocketShutdown.Both) handler.Close() 'Signalthemainthreadtocontinue. allDone.Set() EndSub'SendCallback EndClass'AsynchronousSocketListener
看完了这篇文章,相信你对“VB.NET Socket编程的示例分析”有了一定的了解,如果想了解更多相关知识,欢迎关注亿速云行业资讯频道,感谢各位的阅读!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。