Hej! hm.. har testat mer och kan konstatera att den byter ut dessa fyra "ÿÿÿÿ"rcon till en spelserver via UdpClient
Jag försöker bygga en test applikation, som ska kommunicer med olika HL spelservrar via rcon, i VB.NET 2003, men får den inte att skicka tillbaka något från spelservern :(
Kanske någon här kan svara på vad som är fel m.m.
Bra att veta om man kör denna, som den är satt nu med LocalHost så går det bra att få tillbaka informationen, men byter man LocalHost till en annan maskin så får man inget svar i från den...
'här är koden i formuläret
'classen "Socket" som ska vara med i projektet .... koden för den syns längre ned
Private WithEvents MySock As New Socket
Try
MySock.Connect("LocalHost", 27015)
MySock.Bind(27015)
MySock.SendText("ÿÿÿÿchallenge rcon")
MySock.StopSocket()
Catch ex As Exception
Console.WriteLine(("Exception : " + ex.ToString()))
End Try
Private Sub MySock_DataArrival(ByVal sData As String, ByVal bData() As Byte, ByVal sRemoteHost As String, ByVal nRemotePort As Integer) Handles MySock.DataArrival
Dim strMsg As String
strMsg = sData & vbCrLf
MsgBox(strMsg)
End Sub
'Här är koden för classen
Imports System.Threading
Imports System.Net.Sockets
Imports System.Text.Encoding
Public Class Socket
#Region "Declares"
Private iLocalPort As Integer = 0
Private sLocalHost As String = ""
Private MySocket As New UdpClient
Private MyState As SocketStates
Private MyThread As New Thread(AddressOf GetData)
#End Region
#Region "Event"
Public Event DataArrival(ByVal sData As String, ByVal bData As Byte(), ByVal sRemoteHost As String, ByVal nRemotePort As Integer)
#End Region
#Region "Property"
'Public WriteOnly Property LocalHost()
'Set(ByVal Value)
'sLocalHost = Value
' End Set
' End Property
Public ReadOnly Property State() As SocketStates
Get
State = MyState
End Get
End Property
Public Property LocalPort()
Get
LocalPort = iLocalPort
End Get
Set(ByVal Value)
iLocalPort = Value
End Set
End Property
#End Region
#Region "Enum"
Public Enum SocketStates
NotBound = 0
Bound = 1
End Enum
#End Region
#Region "Sub"
Public Sub Connect(ByVal sRemoteHost As String, ByVal sRemotePort As Integer)
Try
MySocket.Connect(sRemoteHost, sRemotePort)
Catch e As Exception
Console.WriteLine(e.ToString())
End Try
End Sub
Public Sub SendText(ByVal sValue As String)
Dim MyByte = ASCII.GetBytes(sValue)
MySocket.Send(MyByte, MyByte.Length)
End Sub
Public Sub Bind(Optional ByVal nLocalPort1 As Integer = 0)
If nLocalPort1 <> 0 Then iLocalPort = nLocalPort1
If MyState = SocketStates.NotBound Then
MyState = SocketStates.Bound
MyThread.Start()
End If
End Sub
Public Sub StopSocket()
If MyState = SocketStates.Bound Then
MyState = SocketStates.NotBound
'SendText("")
End If
End Sub
Private Sub GetData()
Dim GetSocket As New UdpClient(iLocalPort)
Dim RemoteComputer As New System.Net.IPEndPoint(System.Net.IPAddress.Any, 0)
Dim MyByte() As Byte
Dim MyText As String
Do While MyState = SocketStates.Bound
MyByte = GetSocket.Receive(RemoteComputer)
MyText = ASCII.GetString(MyByte)
RaiseEvent DataArrival(MyText, MyByte, RemoteComputer.Address.ToString, RemoteComputer.Port)
Loop
End Sub
#End Region
End ClassSv: rcon till en spelserver via UdpClient
till ????