vb6 multiplayer server using playit.gg kindly assist

Viewed 62

I am new to this. am not sure if anybody used game ranger before and I am trying to create something more simple.

client and server connection, the client connects to the server pc over the internet using the playit.gg provided ip:port and it connects ok.

now I wonder if there is anything else needed for the game to detect other ips in-game multiplayer screen?.

I have a multi-connection server and IP vb6 source. simple using Winsock.

were you see the server:port is inputted from

.RemoteHost = "write-mechanical.at.playit.gg"
.RemotePort = "55224"

chat client side to connect

Option Explicit

    Private Sub cmdConnect_Click()
        'Check input.
        txtServer.Text = Trim$(txtServer.Text)
        txtPort.Text = Trim$(txtPort.Text)
        txtNickname.Text = Trim$(txtNickname.Text)
        
        If Len(txtServer.Text) = 0 Or Len(txtPort.Text) = 0 Or _
           Len(txtNickname.Text) = 0 Then
            
            MsgBox "Please fill in all fields!", vbCritical
            Exit Sub
        ElseIf Not IsNumeric(txtPort.Text) Then
            MsgBox "Invalid port value!", vbCritical
            Exit Sub
        End If
        
        'Done with that...
        strMyNickname = txtNickname.Text
        
        With frmChat.sckClient
            .Close
            bolRecon = False
            .RemoteHost = txtServer.Text
            .RemotePort = txtPort.Text
            .Connect
        End With
        
        Me.Hide
        frmChat.Show
        AddStatusMessage frmChat.rtbChat, RGB(128, 128, 128), "> Connecting to " & txtServer.Text & ":" & txtPort.Text & "..."
    End Sub
    
    Private Sub txtPort_KeyPress(KeyAscii As Integer)
        'Number only.
        If Not IsNumeric(Chr$(KeyAscii)) And Not KeyAscii = 8 Then KeyAscii = 0
    End Sub

and server-side to accept

With frmChat
        .sckServer(0).Close
        .sckServer(0).LocalPort = CInt(txtPort.Text)
        .sckServer(0).Listen 'Opens the winsock control.
    End With

Dim strNotify
Dim strPacket As String
Option Explicit

'JUST USED FOR FORM RESIZING.
Private Type RECT
    rctLeft As Long
    rctTop As Long
    rctRight As Long
    rctBottom As Long
End Type

'JUST USED FOR FORM RESIZING.
Private Declare Function GetClientRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long

'JUST USED FOR FORM RESIZING.
Private udtMyRect As RECT

Private Sub sckServer_Close(Index As Integer)
    sckServer(Index).Close
    
    Dim strPacket As String
    
    strPacket = "LEA" & Chr$(2) & udtUsers(Index).strNickname & Chr$(4)
    SendGlobalData strPacket
    
    AddUserEntersLeaves rtbChat, udtUsers(Index).strNickname, False
    RemoveListItem lstUsers, udtUsers(Index).strNickname
    
    With udtUsers(Index)
        .strBuffer = vbNullString
        .strIP = vbNullString
        .strNickname = vbNullString
    End With
    
End Sub

'A client is attempting to connect.
'----------------------------------
'Another computer is trying to connect to the server.
'Find a socket we can use to handle the connection.
'Then load a slot in the udtUsers() array for this user.
Private Sub sckServer_ConnectionRequest(Index As Integer, ByVal requestID As Long)
    Dim intNext As Integer
    
    intNext = ModChat.NextOpenSocket
    
    If intNext > 0 Then
        'Found a socket to use; accept connection.
        sckServer(intNext).Accept requestID
        
        'Check if there is a slot open for this connection
        'in the users array.
        If UBUsers < intNext Then
            'There isn't, load one.
            ReDim Preserve udtUsers(intNext) As CHAT_USER
        End If
        
        '(Re)set this client's info.
        With udtUsers(intNext)
            .strIP = sckServer(intNext).RemoteHostIP
            .strNickname = vbNullString
        End With
        
        'We haven't received the user's nickname yet.
        'That will happen in the DataArrival event :)
        'Once it does, we will need to let everyone know that this person joined the room.
        AddStatusMessage rtbChat, RGB(0, 0, 128), "> " & sckServer(intNext).RemoteHostIP & " connected!"
    End If
    
End Sub

Private Sub sckServer_DataArrival(Index As Integer, ByVal bytesTotal As Long)
    Dim strData As String, strPackets() As String
    Dim strTrunc As String, bolTrunc As Boolean
    Dim lonLoop As Long, lonTruncStart As Long
    Dim lonUB As Long
    
    'Get the received data.
    sckServer(Index).GetData strData, vbString, bytesTotal
    
    With udtUsers(Index)
        'Append it to the buffer.
        .strBuffer = .strBuffer & strData
        strData = vbNullString
        
        'Check if the last byte is the packet delimiter (Chr$(4)).
        'If it is, there are no truncated packets.
        'If it isn't, the last packet got split up. >:(
        If Right$(.strBuffer, 1) <> Chr$(4) Then
        
            'Get all data to the right of the last Chr$(4) which is the truncated packet.
            bolTrunc = True
            
            'Find position of last packet delimiter.
            lonTruncStart = InStrRev(.strBuffer, Chr$(4))
            
            'Check if it was found.
            If lonTruncStart > 0 Then
                'Extract out the truncated part.
                strTrunc = Mid$(.strBuffer, lonTruncStart + 1)
            End If
            
        End If
        
        'We checked if the data was truncated.
        'If it was, we put that part away for now and set the Truncated flag to TRUE (bolTrunc).
        
        'Split up the data buffer into individual packets
        'in case we received more than 1 at a time.
        'Process them individually.
        If InStr(1, .strBuffer, Chr$(4)) > 0 Then
            strPackets() = Split(.strBuffer, Chr$(4))
            
            'Now all of the individual packets are in strPackets().
            'Loop through all of them.
            lonUB = UBound(strPackets) 'Get number of packets.
            'If the data is truncated, don't process the last one
            'because it isn't complete.
            If bolTrunc Then lonUB = lonUB - 1
            
            'Start looping through all packets.
            For lonLoop = 0 To lonUB
                'Check length of packet.
                'Each packet has a command/header,
                'the packet must be at least that length.
                'In this example, all headers are 3 bytes/characters long.
                If Len(strPackets(lonLoop)) > 3 Then
                    'Look at the header and process the packet accordingly.
                    Select Case Left$(strPackets(lonLoop), 3)
                        
                        'Packet is a chat message.
                        Case "MSG"
                            'Process message.
                            ParseChatMessage Index, strPackets(lonLoop)
                            
                        'User is connecting (sending nickname).
                        Case "CON"
                            'Process connection.
                            ParseConnection Index, strPackets(lonLoop)
                        'Add your own here! :)
                        'Case "XXX"
                            'Do something.
                        
                        'Case "YYY"
                            'Do something.
                            
                    End Select
                End If
            Next lonLoop
        
        End If
        
        'We're done processing all packets.
        Erase strPackets
        
        'Now we can erase all the data we just processed from the buffer.
        'Otherwise, it will just keep growing in size and the same data
        'will be processed over and over (which might actually be kinda cool?).
        .strBuffer = vbNullString
        
        If bolTrunc Then
            'Still have a piece of a packet left over because the data was truncated.
            'Erase the buffer then put just the truncated part back in.
            .strBuffer = strTrunc
        End If
        
        strTrunc = vbNullString
    End With
    
End Sub

just a quote from my comment laying out what I want to do.

the server is in my computer running and they connect to me from another house over the internet using the ip and port provided by playitt.gg ok so now that i know they are connected to my machine via the server app. now i want to know is will multiplayer games be able to detect those ips even we got same game same version installed

0 Answers
Related