当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > VB.net基础:使用UDP发送和接收消息

ASP.NET
asp.net GridView控件中模板列CheckBox全选、反选、取消
asp.net GridView 删除时弹出确认对话框(包括内容提示)
asp.net DropDownList 三级联动下拉菜单实现代码
asp DataTable添加列和行的三种方法
Asp.net 页面调用javascript变量的值
asp.net 长文章通过设定的行数分页
asp.net 定时间点执行任务的简易解决办法
asp.net 页面延时五秒,跳转到另外的页面
asp.net 动态输出透明gif图片
asp.net DataList与Repeater用法区别
asp.net Javascript获取CheckBoxList的value
asp.net程序在调式和发布之间图片路径问题的解决方法
asp.net下生成英文字符数字验证码的代码
asp.net 页面版文本框智能提示JSCode (升级版)
ASP.NET URL伪静态重写实现方法
ASP.NET 2.0 中Forms安全认证
asp.net 动态添加多个用户控件
asp.net Repeater显示父子表数据,无闪烁
asp.net 无法获取的内部内容,因为该内容不是文本 的解决方法
asp.net GridView排序简单实现

ASP.NET 中的 VB.net基础:使用UDP发送和接收消息


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 101 ::
收藏到网摘: n/a

Imports System.NetImports System.ThreadingImports System.TextImports System.Net.Sockets Module Module1 Dim PortNumber As Integer = 1984 '侦听端口号 Dim Cmd As String = "Chat:" '提示符 Dim listener As Socket '侦听socket Dim tListener As Thread '侦听线程 Dim Prompted As Boolean = False '用于线程间同步的标志变量 Sub Main() Welcome() '欢迎信息 StartListener() '开始侦听 StartChatting() '准备好让用户发送消息 End Sub Private Sub Welcome() Dim txtMessage As String = vbCrLf & "Welcome! I am a console application for LAN chatting." & vbCrLf Console.WriteLine(txtMessage) End Sub Private Sub StartListener() Dim ready As Boolean = False Dim LocalPoint As IPEndPoint Dim msg As String While Not ready '向用户询问侦听端口号。用户可以直接回车,表示选择默认的。 msg = GetParams("===Now, enter the local port you want to listen(" & PortNumber & "):") If msg = "" Then msg = PortNumber Try PortNumber = Int(msg) LocalPoint = New IPEndPoint(Dns.GetHostByName(Dns.GetHostName).AddressList(0), PortNumber) listener = New Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp) listener.Bind(LocalPoint) ready = True Catch ex As Exception Console.WriteLine("※※※ERROR※※※ " & vbCrLf & ex.Message & vbCrLf) End Try End While tListener = New Thread(AddressOf thrListener) tListener.Start() End Sub Private Sub StartChatting() Dim RemoteHost As String = Dns.GetHostName Dim RemotePort As Integer = 1984 Dim RemotePoint As IPEndPoint Dim ready As Boolean = False Dim msg As String While Not ready '向用户询问发送消息的目标主机和端口。用户可以直接回车,表示选择默认的。 msg = GetParams("---enter the name of the one you want to chat with(" & RemoteHost & "):") If Not msg = "" Then RemoteHost = msg msg = GetParams("---enter the port number that guy listening at(" & RemotePort & "):") If msg = "" Then msg = RemotePort Try RemotePort = Int(msg) RemotePoint = New IPEndPoint(Dns.GetHostByName(RemoteHost).AddressList(0), RemotePort) ready = True Catch ex As Exception Console.WriteLine("※※※ERROR※※※ " & vbCrLf & ex.Message & vbCrLf) End Try End While Console.WriteLine() Console.WriteLine("OK, now you can chat. Type ""help"" to find out what you can do.") Console.WriteLine() Dim sender As New UdpClient Dim Message As String = Prompt() While True '用户现在可以开始发送消息 Prompted = False Select Case Message.ToLower Case "exit" Exit While Case "help" ShowHelp() Case Else Dim ByArr As Byte() = Encoding.Unicode.GetBytes(Message) sender.Send(ByArr, ByArr.Length, RemotePoint) '发出消息 End Select Message = Prompt() End While tListener.Abort() End End Sub Private Function GetParams(ByVal Msg As String) As String Console.Write(Msg) Return Console.ReadLine End Function Private Function Prompt() As String If Not Prompted Then Console.Write(Cmd) Prompted = True End If Return Console.ReadLine End Function Private Sub thrListener() '侦听线程 Dim bytes(4096) As Byte Dim NumGet As Integer Dim Msg As String While True Debug.WriteLine("Waiting for a message...") NumGet = listener.Receive(bytes) '接收 Prompted = False Msg = Encoding.Unicode.GetString(bytes, 0, NumGet) '与发送消息一样使用unicode编码 Console.WriteLine(vbCrLf & ">>>>>>>>>" & Msg & vbCrLf) If Not Prompted Then Console.Write(Cmd) Prompted = True End If End While End Sub Private Sub ShowHelp() Console.WriteLine("") Console.WriteLine("========================================================================") Console.WriteLine("This program is very simple, you can type ""exit"" to exit program.") Console.WriteLine("========================================================================") Console.WriteLine("") End Sub End Module