您好,登錄后才能下訂單哦!
小編給大家分享一下如何實現VB.NET服務器端,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
這是用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
以上是“如何實現VB.NET服務器端”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。