温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

VB.NET Socket编程的示例分析

发布时间:2021-12-02 11:24:33 阅读:445 作者:小新 栏目:编程语言
开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

小编给大家分享一下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元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI

开发者交流群×