十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
VB.NET还是比较常用的,于是我研究了一下VB.NET服务器端,在这里拿出来和大家分享一下,希望对大家有用。

成都创新互联公司是一家专业提供闵行企业网站建设,专注与做网站、网站制作、H5技术、小程序制作等业务。10年已为闵行众多企业、政府机构等服务。创新互联专业网站设计公司优惠进行中。
这是用VB.NET实现的一个简单的P2P示例,利用了UDP打洞技术.分服务器端跟客户端,VB.NET服务器端负责登陆记录用户的IP和端口及转发打洞消息(相关技术在CSDN搜一下,有很多的),原理到处都有,这里贴出了VB.NET的代码,供初学者交流,也欢迎高手点评。
VB.NET服务器端在启动成功后,输入help可以查看到服务器相关命令。客户端在登陆成功后,输入help可以查看客户端相关命令。(登陆时用户名随便)
以下是VB.NET服务器端:
- Imports System.Net
 - Imports System.Net.Sockets
 - Imports System.Text
 - Imports System.Threading
 - Imports System.Collections
 - Module myUDPServer
 - #Region "全局变量"
 - Dim ServerSocket As New Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp)
 - Dim ipep As IPEndPoint = New IPEndPoint(IPAddress.Any, 11000)
 - Dim htUserList As New Hashtable '用来保存在线用户和用户的"IP和端口"
 - Dim userName(0) As String
 - Dim userIPEP(0) As IPEndPoint
 - Dim userTime(0) As Integer
 - Dim timerDelegate As New TimerCallback(AddressOf onLineTimeOut)
 - #End Region
 - #Region "参数"
 - '以下是客户端到服务器端的消息开头
 - Const LOGININ As String = "10" '请求登陆的消息|||消息形式:10+自己的用户名
 - Const LOGINOUT As String = "11" '请求登出的消息|||消息形式:11+自己的用户名
 - Const GETULIST As String = "12" '请求获得在线用户列表|||消息形式:12
 - Const P2PCONN As String = "13" '请求P2P连接的消息|||消息形式:13+自己的用户名+|+对方的用户名
 - Const HOLDLINE As String = "14" '保持连接.|||消息开式:14+自己的用户名
 - '以下是服务器到客户端的消息开头
 - Const HVUSER As String = "20" '用户名已存在
 - Const GETUSER As String = "21" '在线用户列表|||消息格式:21+用户名+EP
 - Const MAKHOLD As String = "22" '打洞命令|||消息格式:22+IP
 - Const LOGINOK As String = "23" '登陆成功
 - Const SERVCLS As String = "24" '服务器关闭
 - Const MSGEND As String = "25" '消息结束
 - '以下是服务器端的命名
 - Const EXITPRO As String = "EXIT" '退出命令
 - Const SHOWULIST As String = "SHOWUSER" '显示在线用户
 - Const HELP As String = "HELP" '显示帮助
 - #End Region
 - #Region "方法"
 - '主函数,程序入口
 - Sub Main()
 - '获得服务器的IP地址
 - Dim addressList As System.Net.IPAddress() = Dns.GetHostByName(Dns.GetHostName()).AddressList
 - Dim ServerIP As IPAddress = addressList(0)
 - ServerSocket.Bind(ipep)
 - Console.WriteLine("服务器正在启动....")
 - Console.WriteLine("服务器IP:" & ServerIP.ToString & " 正在监听" & ipep.Port.ToString & "端口")
 - Dim listenTH As New Thread(AddressOf listen)
 - listenTH.Start() '启用监听的线程
 - Console.WriteLine("服务器启动成功.....")
 - Dim timer As New Timer(timerDelegate, Nothing, 0, 5000)
 - Dim SVInput As String
 - While True
 - Console.Write("Server>")
 - SVInput = Console.ReadLine().ToUpper
 - Select Case SVInput
 - Case EXITPRO
 - listenTH.Abort()
 - ServerSocket.Close()
 - Exit Sub
 - Case SHOWULIST
 - showUser()
 - Case HELP
 - Console.Write("*" & Chr(10) & Chr(13) & "exit:输出当前程序" & Chr(10) & Chr(13) &
 
"showuser:显示当前在线用户例表" & Chr(10) & Chr(13) &
"help:显示帮助" & Chr(10) & Chr(13) & "*" & Chr(10) & Chr(13))- Case Else
 - Console.WriteLine("*" & Chr(10) & Chr(13)
 
& "笨瓜,你输入的不是有效的命令." & Chr(10) & Chr(13) & "*")- End Select
 - End While
 - End Sub
 
【编辑推荐】