温馨提示×

温馨提示×

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

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

VB.NET Socket编程的示例分析

发布时间:2021-12-02 11:24:33 来源:亿速云 阅读:427 作者:小新 栏目:编程语言

小编给大家分享一下VB.NET Socket编程的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

下面通过例子来学习VB.NET Socket编程类的应用,下面的程序分别分服务器和客户端两部分:

  1. ImportsSystem  

  2. ImportsSystem.Net  

  3. ImportsSystem.Net.Sockets  

  4. ImportsSystem.Text  

  5. ImportsSystem.Threading  

  6. ImportsMicrosoft.VisualBasic  

  7.  

  8. 'Stateobjectforreadingclientdataasynchronously  

  9.  

  10. PublicClassStateObject  

  11. 'Clientsocket.  

  12. PublicworkSocketAsSocket=Nothing 

  13. 'Sizeofreceivebuffer.  

  14. PublicConstBufferSizeAsInteger=1024 

  15. 'Receivebuffer.  

  16. Publicbuffer(BufferSize)AsByte  

  17. 'Receiveddatastring.  

  18. PublicsbAsNewStringBuilder  

  19. EndClass'StateObject  

  20.  

  21.  

  22. PublicClassAsynchronousSocketListener  

  23. 'Threadsignal.  

  24. PublicSharedallDoneAsNewManualResetEvent(False)  

  25.  

  26. 'Thisserverwaitsforaconnectionandthenusesasychronousoperationsto  

  27. 'accepttheconnection,getdatafromtheconnectedclient,  

  28. 'echothatdatabacktotheconnectedclient.  

  29. 'Itthendisconnectsfromtheclientandwaitsforanotherclient.  

  30. PublicSharedSubMain()  

  31. 'Databufferforincomingdata.  

  32. Dimbytes()AsByte=New[Byte](1023){}  

  33.  

  34. 'Establishthelocalendpointforthesocket.  

  35. DimipHostInfoAsIPHostEntry=Dns.Resolve(Dns.GetHostName())  

  36. DimipAddressAsIPAddress=ipHostInfo.AddressList(0)  

  37. DimlocalEndPointAsNewIPEndPoint(ipAddress,11000)  

  38.  

  39. 'CreateaTCP/IPsocket.  

  40. DimlistenerAsNewSocket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp)  

  41.  

  42. 'Bindthesockettothelocalendpointandlistenforincomingconnections.  

  43. listener.Bind(localEndPoint)  

  44. listener.Listen(100)  

  45.  

  46. WhileTrue  

  47. 'Settheeventtononsignaledstate.  

  48. allDone.Reset()  

  49.  

  50. 'Startanasynchronoussockettolistenforconnections.  

  51. Console.WriteLine("Waitingforaconnection...")  

  52. listener.BeginAccept(NewAsyncCallback(AddressOfAcceptCallback),listener)  

  53.  

  54. 'Waituntilaconnectionismadeandprocessedbeforecontinuing.  

  55. allDone.WaitOne()  

  56. EndWhile  

  57. EndSub'Main  

  58.  

  59.  

  60. PublicSharedSubAcceptCallback(ByValarAsIAsyncResult)  

  61. 'Getthesocketthathandlestheclientrequest.  

  62. DimlistenerAsSocket=CType(ar.AsyncState,Socket)  

  63. 'Endtheoperation.  

  64. DimhandlerAsSocket=listener.EndAccept(ar)  

  65.  

  66. 'Createthestateobjectfortheasyncreceive.  

  67. DimstateAsNewStateObject  

  68. state.workSocket=handler 

  69. handler.BeginReceive(state.buffer,0,StateObject.
    BufferSize,0,NewAsyncCallback(AddressOfReadCallback),state)  

  70. EndSub'AcceptCallback  

  71.  

  72.  

  73. PublicSharedSubReadCallback(ByValarAsIAsyncResult)  

  74. DimcontentAsString=String.Empty  

  75.  

  76. 'Retrievethestateobjectandthehandlersocket  

  77. 'fromtheasynchronousstateobject.  

  78. DimstateAsStateObject=CType(ar.AsyncState,StateObject)  

  79. DimhandlerAsSocket=state.workSocket  

  80.  

  81. 'Readdatafromtheclientsocket.  

  82. DimbytesReadAsInteger=handler.EndReceive(ar)  

  83.  

  84. IfbytesRead>0Then  

  85. 'Theremightbemoredata,sostorethedatareceivedsofar.  

  86. state.sb.Append(Encoding.ASCII.GetString(state.buffer,0,bytesRead))  

  87.  

  88. 'Checkforend-of-filetag.Ifitisnotthere,read  

  89. 'moredata.  

  90. content=state.sb.ToString()  

  91. Ifcontent.IndexOf("<EOF>")>-1Then  

  92. 'Allthedatahasbeenreadfromthe  

  93. 'client.Displayitontheconsole.  

  94. Console.WriteLine("Read{0}bytesfromsocket."+vbLf+"Data:{1}",content.Length,content)  

  95. 'Echothedatabacktotheclient.  

  96. Send(handler,content)  

  97. Else  

  98. 'Notalldatareceived.Getmore.  

  99. handler.BeginReceive(state.buffer,0,StateObject.
    BufferSize,0,NewAsyncCallback(AddressOfReadCallback),state)  

  100. EndIf  

  101. EndIf  

  102. EndSub'ReadCallback  

  103.  

  104. PrivateSharedSubSend(ByValhandlerAsSocket,ByValdataAsString)  

  105. 'ConvertthestringdatatobytedatausingASCIIencoding.  

  106. DimbyteDataAsByte()=Encoding.ASCII.GetBytes(data)  

  107.  

  108. 'Beginsendingthedatatotheremotedevice.  

  109. handler.BeginSend(byteData,0,byteData.
    Length,0,NewAsyncCallback(AddressOfSendCallback),handler)  

  110. EndSub'Send  

  111.  

  112. PrivateSharedSubSendCallback(ByValarAsIAsyncResult)  

  113. 'Retrievethesocketfromthestateobject.  

  114. DimhandlerAsSocket=CType(ar.AsyncState,Socket)  

  115.  

  116. 'Completesendingthedatatotheremotedevice.  

  117. DimbytesSentAsInteger=handler.EndSend(ar)  

  118. Console.WriteLine("Sent{0}bytestoclient.",bytesSent)  

  119.  

  120. handler.Shutdown(SocketShutdown.Both)  

  121. handler.Close()  

  122. 'Signalthemainthreadtocontinue.  

  123. allDone.Set()  

  124. EndSub'SendCallback  

  125. EndClass'AsynchronousSocketListener 

看完了这篇文章,相信你对“VB.NET Socket编程的示例分析”有了一定的了解,如果想了解更多相关知识,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

向AI问一下细节

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

AI