KiXforms Forum Index KiXforms
The Forum for the KiXforms Community
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 
 Quick Links 
Site News
Downloads
Documentation
Donations
Script Archive
Tracking Systems

VB TCP/IP Server (Gateway) for KiX
Goto page Previous  1, 2, 3  Next
 
Post new topic   Reply to topic    KiXforms Forum Index -> Discussion
View previous topic :: View next topic  
Author Message
Shawn
KiXforms Developer
KiXforms Developer


Joined: 22 Feb 2003
Posts: 1983
Location: Canada

PostPosted: Mon Aug 02, 2004 3:37 pm    Post subject: Reply with quote

hmmm yeah - its kinda fun stuff. Would imagine that firewalls aside, if I ran the server and one of you guys tried connecting to me at 69.158.97.39, that it would work ? I will leave my server running for a hour or two - see if anybody can send me a message, if I get one - will post it here.
Back to top
View user's profile Send private message
Bonji
KiXforms Aficionado
KiXforms Aficionado


Joined: 10 Mar 2003
Posts: 393
Location: Virginia

PostPosted: Mon Aug 02, 2004 3:48 pm    Post subject: Reply with quote

I mainly worked with sockets a year or so ago trying to get a client/server app going. I used Socketwrench extensively, but could only get blocking sockets to work consistantly. I recently have tried out VB with sockets, and have success with that but I prefer to stay in the KiX world. Smile

I tried to connect to your server Shawn, but it did not seem to work. Is there any way to get an error message out yet?

_________________
-Ben


Last edited by Bonji on Mon Aug 02, 2004 3:53 pm; edited 1 time in total
Back to top
View user's profile Send private message
Shawn
KiXforms Developer
KiXforms Developer


Joined: 22 Feb 2003
Posts: 1983
Location: Canada

PostPosted: Mon Aug 02, 2004 3:53 pm    Post subject: Reply with quote

What do you think of SocketWrench, would it be a good model to follow ? How about sockets in dotnet, ever try them ? Got any vb code you can post/share that uses sockets ?

ja - didnt get anything from you. wonder what it could be. i haven't tried this stuff between two computers yet.
Back to top
View user's profile Send private message
Shawn
KiXforms Developer
KiXforms Developer


Joined: 22 Feb 2003
Posts: 1983
Location: Canada

PostPosted: Mon Aug 02, 2004 3:56 pm    Post subject: Reply with quote

I was thinking this object would make a good candidate for @ERROR support, ja ? But no - no error support yet.
Back to top
View user's profile Send private message
Bonji
KiXforms Aficionado
KiXforms Aficionado


Joined: 10 Mar 2003
Posts: 393
Location: Virginia

PostPosted: Mon Aug 02, 2004 4:00 pm    Post subject: Reply with quote

I do like Socketwrench's method of working with sockets. It is about as straightforward as it can be. I noticed they offer two ways to work with events, and it appears to me that you are utilizing the activex controls they mention. I like the activex method better than the alternative.

I've never programmed in dotnet so that's unfamiliar territory for me. The bulk of the VB code I've tried is from the examples that comes with Socketwrench (at least the one I installed a long time ago). The echo server/client was good for me to figure out how it all comes together.

I can send you that code if you don't have it.

_________________
-Ben
Back to top
View user's profile Send private message
Bonji
KiXforms Aficionado
KiXforms Aficionado


Joined: 10 Mar 2003
Posts: 393
Location: Virginia

PostPosted: Mon Aug 02, 2004 4:08 pm    Post subject: Reply with quote

I tried to connect to a different computer from mine, and it does not work.

I ran a portscan on the server computer and it does not show port 777 as open.

I'll see if I can come up with anything.

_________________
-Ben
Back to top
View user's profile Send private message
Bonji
KiXforms Aficionado
KiXforms Aficionado


Joined: 10 Mar 2003
Posts: 393
Location: Virginia

PostPosted: Mon Aug 02, 2004 4:12 pm    Post subject: Reply with quote

I noticed a similar problem when I was working with my echo server because I was using 127.0.0.1 for the local address instead of the adapter's address. When I changed it to the adapter's address I could then connect from a different computer.

Might this be related?

_________________
-Ben
Back to top
View user's profile Send private message
Bonji
KiXforms Aficionado
KiXforms Aficionado


Joined: 10 Mar 2003
Posts: 393
Location: Virginia

PostPosted: Mon Aug 02, 2004 4:16 pm    Post subject: Reply with quote

OK, I fixed it. The following line needs to be added to the $listener code on the server script...

Code:

$listener.address = "1.1.1.1"   ;Server's IP address


Onward and upward!

_________________
-Ben
Back to top
View user's profile Send private message
Shawn
KiXforms Developer
KiXforms Developer


Joined: 22 Feb 2003
Posts: 1983
Location: Canada

PostPosted: Mon Aug 02, 2004 4:25 pm    Post subject: Reply with quote

ok, i changed the server code ... and listening again.

btw - this kf implementation is built using pure winsock api. there is no reliance on socketwrench or any other activex control. wouldn't mind basing the interface on socketwrench though, if its good.
Back to top
View user's profile Send private message
krabourn
KiXforms Aficionado
KiXforms Aficionado


Joined: 05 Mar 2003
Posts: 273
Location: San Antonio. TX

PostPosted: Mon Aug 02, 2004 4:28 pm    Post subject: Reply with quote

I have not done enough with sockets to offer any good suggestions, yet.
Here is some VB.NET code for pinging that I found and mangled together. I never really finished it. Maybe it will help in your decision making.
Code:
Option Compare Text

Imports System
Imports System.Diagnostics
Imports System.IO
Imports System.Text
Imports System.Net
Imports System.Net.sockets
Imports System.Threading
Imports System.Collections
Imports Microsoft.VisualBasic

Namespace DotPing
   Module DotPing
        Private objLogfile As StreamWriter      'Stream for logging to file (Nothing if no logging is done)
        Private epDestination As IPEndPoint     'EndPoint of remote host
        Private epSource As IPEndPoint          'EndPoint of local host
        Private objSocket As Socket             'Socket used for sending packets
        Private objRecSocket As Socket          'Socket used by receiver
        Private objPing As ICMPEcho             'Instance of ICMP-Echo packet
        Private uiIdentifier As UInt16          'The used identifier (for checking in receiver thread)
        Private objTable As New Hashtable       'The hashtable for storing send packets
        Private objSyncTable As Hashtable       'Synchronized instance of the hastable
        Private myName As String = ""           'Program name from commandline
        Private intCount As Integer = 0         'Number of packets to send
        Private intTimeout As Integer = 10000   'Timeout in milliseconds
        Private objSendTimer As Timers.Timer    'Timer used for sending packets
        Private bytReceiveBuffer(65536) As Byte 'Buffer large enough te receive any IP-packet
        Private objReceiveWaitHandle As New AutoResetEvent(False)   'Handle used for synchronizing receiver
        Private blnContinue As Boolean = True   'Set to false if program has to stop

      Private Sub Usage()
         Console.WriteLine("usage:{0}{1} targethost [/count:number] [/delay:milliseconds]", ControlChars.Tab, myName)
         Console.WriteLine("{0}{1} [/logfile:filename] [/size:bytes] [/timeout:milliseconds]", ControlChars.Tab, "                ".Substring(0, myName.Length))
         Console.WriteLine()
         Console.WriteLine("Parameter:")
         Console.WriteLine("{0}targethost{0}IP address or hostname of target machine.", ControlChars.Tab)
         Console.WriteLine("Options:")
         Console.WriteLine("{0}/count{0}{0}Number of packets to send. Default is infinite.", ControlChars.Tab)
         Console.WriteLine("{0}/delay{0}{0}Delay between packets. Default is 1000 milliseconds.", ControlChars.Tab)
         Console.WriteLine("{0}/logfile{0}Append logging to this file. This file will be created", ControlChars.Tab)
         Console.WriteLine("{0}{0}{0}if it does not already exist.", ControlChars.Tab)
         Console.WriteLine("{0}/size{0}{0}Size of the data field. Default is 32 bytes.", ControlChars.Tab)
         Console.WriteLine("{0}/timeout{0}Timeout before packets are marked as lost.", ControlChars.Tab)
         Console.WriteLine("{0}{0}{0}The default is 10000 milliseconds.", ControlChars.Tab)
            Console.WriteLine()
      End Sub

        Private Sub WriteLogging(ByVal Format As String, ByVal ParamArray arg() As Object)
            '
            'Write logging to the console and (optional) logfile
            'Make sure data from different threads don't mangle
            '
            Monitor.Enter(objSocket)
            Try
                Console.WriteLine(Format, arg)
                If Not objLogfile Is Nothing Then
                    objLogfile.WriteLine(Format, arg)
                End If
            Finally
                Monitor.Exit(objSocket)
            End Try
        End Sub

        Private Function GetOption(ByVal FullOption As String, ByVal CurOption As String) As Integer
            '
            'Validate command-line option with integer value (like /timeout:100).
            'This means: make sure option is shorthand for full optionname
            '            the argument is a valid integer
            '
            Dim strSplit As String()
            Dim intResult As Integer
            strSplit = CurOption.Split(":"c)
            If strSplit.Length <> 2 Then
                Throw New Exception("Invalid option " & CurOption & "!")
            End If
            If strSplit(0) <> FullOption.Substring(0, strSplit(0).Length) Then
                Throw New Exception("Invalid option " & CurOption & "!")
            End If
            intResult = Integer.Parse(strSplit(1))
            If intResult < 1 Then
                Throw New Exception("Invalid value " & intResult.ToString & " for option " & CurOption & "!")
            End If
            Return intResult
        End Function

        Private Function GetLogfile(ByVal CurOption As String) As String
            '
            'Get the name of the logfile
            '
            Dim strSplit As String()
            Dim strResult As String
            strSplit = CurOption.Split(":"c)
            If strSplit.Length < 2 Then
                Throw New Exception("Invalid option " & CurOption & "!")
            End If
            If strSplit(0) <> "/logfile".Substring(0, strSplit(0).Length) Then
                Throw New Exception("Invalid option " & CurOption & "!")
            End If
            strResult = CurOption.Substring(strSplit(0).Length + 1)
            Return strResult
        End Function

        Public Sub Main()
            Dim heDestination As IPHostEntry    'HostEntry for remote host
            Dim objRecThread As Thread          'Thread which does all handling of received packets
            Dim objEnterThread As Thread        'Thread that waits for ENTER on the console
            Dim objCleanTimer As Timers.Timer   'Timer that handles cleaning of lost packets
            Dim strTarget As String = ""        'Name of target (remote) host
            Dim strArg As String                'Current argument
            Dim intSize As Integer = 32         'Size of data in ICMP-Echo packet
            Dim intDelay As Integer = 1000      'Delay in milliseconds between packets
            Dim strLogfile As String = ""       'Name of logfile
            Dim bytData() As Byte               'Byte array for data in ICMP-Echo packet
            Dim i As Integer                    'Just a loop counter
            Dim strSplit() As String            'I just love String.Split()

            '
            'First parse the arguments and options. See Usage() for description
            '
            Try
                For Each strArg In Environment.GetCommandLineArgs
                    If myName = "" Then
                        strSplit = strArg.Split("\"c)
                        myName = strSplit(strSplit.Length - 1)
                        If myName.Substring(myName.Length - 4, 4) = ".exe" Then
                            myName = myName.Substring(0, myName.Length - 4)
                        End If
                    Else
                        Select Case strArg.Substring(0, 2)
                            Case "/c"
                                intCount = GetOption("/count", strArg)
                            Case "/d"
                                intDelay = GetOption("/delay", strArg)
                                If intDelay > 3600000 Then
                                    Throw New Exception("Maximum delay is 3600000 milliseconds!")
                                End If
                            Case "/l"
                                strLogfile = GetLogfile(strArg)
                            Case "/s"
                                intSize = GetOption("/size", strArg)
                                If intSize > 65508 Then
                                    Throw New Exception("Maximum packetsize is 65508 bytes!")
                                End If
                            Case "/t"
                                intTimeout = GetOption("/timeout", strArg)
                                If intTimeout > 60000 Then
                                    Throw New Exception("Maximum value of timeout is 60000!")
                                End If
                            Case Else
                                If strArg.Substring(0, 1) = "/" Then
                                    Throw New Exception("Invalid option " & strArg & "!")
                                End If
                                If strTarget <> "" Then
                                    Throw New Exception("Only one target host allowed!")
                                End If
                                strTarget = strArg
                        End Select
                    End If
                Next
                If strTarget = "" Then
                    Throw New Exception("No target host specified!")
                End If
                If intCount = 0 Then
                    intCount = Integer.MaxValue
                End If
            Catch ex As Exception
                Console.WriteLine(ex.Message)
                Usage()
                Exit Sub
            End Try
            '
            'Then check Target is a valid hostname or IP-address
            '
            Try
                heDestination = Dns.GetHostByName(strTarget)
            Catch ex As Exception
                Console.WriteLine("Target host {0} not found!", strTarget)
                Exit Sub
            End Try
            If strLogfile <> "" Then
                Try
                    objLogfile = New StreamWriter(strLogfile, True)
                    objLogfile.AutoFlush = True
                Catch ex As Exception
                    Console.WriteLine("Cannot create/append to log file {0}!", strLogfile)
                    Console.WriteLine(ex.Message)
                    Exit Sub
                End Try
            End If
            '
            'Create byte-array voor ICMP-data
            '
            ReDim bytData(intSize - 1)
            For i = 0 To intSize - 1
                bytData(i) = CType(i Mod 256, Byte)
            Next
            '
            'Make sure the hashtable is synchronized
            '
            objSyncTable = Hashtable.Synchronized(objTable)
            '
            'Use process-ID as ICMP-Echo identifier
            '
            uiIdentifier = Convert.ToUInt16(Process.GetCurrentProcess.Id And &HFFFF)
            '
            'Create EndPoint
            '
            epDestination = New IPEndPoint(heDestination.AddressList(0), 0)
            '
            'Create ICMP-Echo packet
            '
            objPing = New ICMPEcho(uiIdentifier, Convert.ToUInt16(&H0), bytData)
            '
            'Create socket
            '
            objSocket = New Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.Icmp)
            '
            'Create threads, timers en timer-handlers
            '
            objRecThread = New Thread(AddressOf Receiver)
            objEnterThread = New Thread(AddressOf PressEnter)
            objSendTimer = New Timers.Timer(intDelay)
            AddHandler objSendTimer.Elapsed, AddressOf Sender
            objCleanTimer = New Timers.Timer(1000)
            AddHandler objCleanTimer.Elapsed, AddressOf Cleaner
            '
            'Ok, lets start!
            '
            WriteLogging("Pinging target {0} every {1} milliseconds.", strTarget, intDelay)
            WriteLogging("The packet size is {0} bytes. The timeout is {1} milliseconds.", intSize, intTimeout)
            Console.WriteLine("Press <Enter> to stop gracefully.")
            objEnterThread.Start()
            objRecThread.Start()
            objSendTimer.Start()
            objCleanTimer.Start()
            '
            'Whe have to stop if:
            '   blnContinue is set to false
            '              OR
            '  intCount is zero AND all packets where received or timed-out
            '
            While blnContinue
                Thread.CurrentThread.Sleep(1000)
                If intCount <= 0 AndAlso objSyncTable.Count = 0 Then
                    Exit While
                End If
            End While
            '
            'Make sure blnContinue is false
            '
            blnContinue = False
            '
            'Signal receiver to stop
            '
            objReceiveWaitHandle.Set()
            objRecThread.Join(1000)
            '
            'Stop all other threads and timers
            '
            objEnterThread.Abort()
            objCleanTimer.Stop()
            objSendTimer.Stop()
            '
            'Make sure all packets are accounted for
            '
            While objSyncTable.Count > 0
                Thread.CurrentThread.Sleep(1000)
                Cleaner(Nothing, Nothing)
            End While
            '
            'Clean up
            '
            If Not objLogfile Is Nothing Then
                objLogfile.Close()
            End If
            '
            'Goodbye
            '
        End Sub

        Private Sub PressEnter()
            Try
                Console.ReadLine()
            Finally
                intCount = 0
            End Try
        End Sub

        Private Sub Sender(ByVal sender As Object, ByVal e As System.Timers.ElapsedEventArgs)
            '
            'This is called (in a seperate thread!) when a packet has to be send.
            '
            Dim intResult As Integer
            Dim bytData As Byte()
            Dim intSeq As Integer

            '
            'Just make sure we are not finished yet
            '
            If (blnContinue = False) Or (intCount <= 0) Then
                Exit Sub
            End If
            Try
                intCount -= 1
                If intCount = 0 Then
                    objSendTimer.Stop()
                End If
                '
                'Update sequence number (the ICMPEcho class will also update the checksum)
                '
                intSeq = (Convert.ToInt32(objPing.Sequence) + 1) And &HFFFF
                objPing.Sequence = Convert.ToUInt16(intSeq)
                '
                'Get the complete packet
                '
                bytData = objPing.Packet
                '
                'Add sequence to the hashtable
                '
                objSyncTable.Add(intSeq, Now)
                '
                'And send it out
                '
                intResult = objSocket.SendTo(bytData, bytData.Length, SocketFlags.None, epDestination)
            Catch ex As Exception
                WriteLogging("Sender stopped. Reason: {0}", ex.Message)
                blnContinue = False
            End Try
        End Sub

        Private Sub Receiver()
            '
            'This Sub (started in a different thread) will receive all ICMP-packets.
            '
            Try
                '
                'Create socket and EndPoint
                '
                objRecSocket = New Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.Icmp)
                epSource = New IPEndPoint(IPAddress.Any, 0)
                Dim tempEP As EndPoint = DirectCast(epSource, EndPoint)
                '
                'Bind Socket
                '
                objRecSocket.Bind(tempEP)
                '
                'And loop until we have to stop
                '
                While blnContinue
                    '
                    'Receiving is done asynchronously because you cannot nicely abort a normal Socket.ReceiveFrom()
                    '
                    objRecSocket.BeginReceiveFrom(bytReceiveBuffer, 0, bytReceiveBuffer.Length, SocketFlags.None, tempEP, New AsyncCallback(AddressOf AsyncReceiver), Nothing)
                    objReceiveWaitHandle.WaitOne()
                End While
            Catch ex As Exception
                WriteLogging("Receiver stopped. Reason: {0}", ex.Message)
                blnContinue = False
            End Try
        End Sub

        Private Sub AsyncReceiver(ByVal ar As IAsyncResult)
            Dim intRecBytes As Integer
            Dim objRecPing As ICMPEcho
            Dim datRecv As DateTime
            Dim datSend As DateTime
            Dim intSequence As Integer
            Dim lngDelay As Long

            Try
                '
                'Get the data
                'Note: we will also receive the IP-header so we have to skip the first 20 bytes
                '
                intRecBytes = objRecSocket.EndReceiveFrom(ar, DirectCast(epSource, EndPoint))
                datRecv = Now
                '
                'The packet must at least be the size of the IP-header (20 bytes) + the ICMP-header (8 bytes)
                '
                If intRecBytes >= 28 Then
                    '
                    'Parse it (you can optimize the speed of the receiver by ignoring the ICMP-data)
                    '
                    objRecPing = ICMPEcho.Parse(bytReceiveBuffer, 20, intRecBytes - 20)
                    If Not objRecPing Is Nothing Then
                        '
                        'Is this for me? (check the identifier)
                        '
                        If uiIdentifier.CompareTo(objRecPing.Identifier) = 0 Then
                            '
                            'Yes! Get the date/time send out of the hashtable, delete the entry and report the latency
                            '
                            intSequence = Convert.ToInt32(objRecPing.Sequence)
                            Try
                                datSend = DirectCast(objSyncTable(intSequence), Date)
                                lngDelay = (datRecv.Ticks - datSend.Ticks) \ 10000
                                If lngDelay < intTimeout Then
                                    objSyncTable.Remove(intSequence)
                                    WriteLogging("Packet {0} send {1} {2}.{3:D3} delay {4} ms", intSequence, datSend.ToShortDateString, datSend.ToLongTimeString, datSend.Millisecond, lngDelay)
                                End If
                            Catch
                            End Try
                        End If
                    End If
                End If
            Catch ex As Exception
                WriteLogging("Receiver stopped. Reason: {0}", ex.Message)
                blnContinue = False
            Finally
                '
                'Signal Receiver that the next packet must be handled
                '
                objReceiveWaitHandle.Set()
            End Try
        End Sub

        Private Sub Cleaner(ByVal sender As Object, ByVal e As System.Timers.ElapsedEventArgs)
            '
            'Clean up packets which have been lost (or at least the timeout period expired)
            '
            Dim lngDelay As Long
            Dim objDic As DictionaryEntry
            Dim intSequence As Integer
            Dim datSend As Date
            Dim objLostTable As New SortedList
            Dim i As Integer

            Try
                If (blnContinue = False) AndAlso (Not e Is Nothing) Then
                    Exit Sub
                End If
                '
                'I use a temporary SortedList so:
                '-    all lost packets are reported in the correct order
                '-    I do not destroy the enumerator by deleting packets
                '
                'Step 1: find lost packets
                '
                Dim myEnumerator As System.Collections.IEnumerator = objSyncTable.GetEnumerator()
                While myEnumerator.MoveNext()
                    objDic = DirectCast(myEnumerator.Current, DictionaryEntry)
                    datSend = DirectCast(objDic.Value, Date)
                    lngDelay = (Now.Ticks - datSend.Ticks) \ 10000
                    If lngDelay > (intTimeout + 100) Then
                        objLostTable.Add(DirectCast(objDic.Key, Integer), datSend)
                    End If
                End While
                '
                'Step 2: Report lost packets and delete them from the hashtable
                '
                If objLostTable.Count > 0 Then
                    For i = 0 To objLostTable.Count - 1
                        intSequence = DirectCast(objLostTable.GetKey(i), Integer)
                        datSend = DirectCast(objLostTable.GetByIndex(i), Date)
                        objSyncTable.Remove(intSequence)
                        WriteLogging("Packet {0} send {1} {2}.{3:D3} lost!", intSequence, datSend.ToShortDateString, datSend.ToLongTimeString, datSend.Millisecond)
                    Next
                    objLostTable.Clear()
                End If
            Catch ex As Exception

            End Try
        End Sub
    End Module
End Namespace

_________________
Kelly
Back to top
View user's profile Send private message Send e-mail MSN Messenger
Bonji
KiXforms Aficionado
KiXforms Aficionado


Joined: 10 Mar 2003
Posts: 393
Location: Virginia

PostPosted: Mon Aug 02, 2004 4:28 pm    Post subject: Reply with quote

Hmm...Still not getting anything back. I only tried this on a LAN setup. I'll try it over the internet to my computer at my house and see what I can figure out.

I like not having an added dependency on Socketwrench, but if that is needed then that works for me, too.

_________________
-Ben
Back to top
View user's profile Send private message
Shawn
KiXforms Developer
KiXforms Developer


Joined: 22 Feb 2003
Posts: 1983
Location: Canada

PostPosted: Mon Aug 02, 2004 4:32 pm    Post subject: Reply with quote

Think maybe the bind needs a bit of extra work ? Not really sure how these physical and virtual-type pppoe thingies work, and how to bind to them - thought it would have been somewhat transparent ...

When I say "base the interface" off socketwrench, not talking about using socketwrench itself, just saying "emulate" the way socketwrench works, in terms of properties and methods and events, and how they all interact ...

From what I've seen so far, socketwrench looks pretty good.
Back to top
View user's profile Send private message
Bryce
KiXforms Supporter
KiXforms Supporter


Joined: 26 Mar 2003
Posts: 69

PostPosted: Mon Aug 02, 2004 4:34 pm    Post subject: Reply with quote

i grabed the lasted dev build from... http://www.kixforms.org/assets/files/kixforms/developer/kixforms45.zip and it does not look to be working....

$listener = $system.socket() is throwing an error...

i did grab the correct dev build right?
Back to top
View user's profile Send private message
Shawn
KiXforms Developer
KiXforms Developer


Joined: 22 Feb 2003
Posts: 1983
Location: Canada

PostPosted: Mon Aug 02, 2004 4:36 pm    Post subject: Reply with quote

probably, but you might have a version of kixforms.dll in your system32 that is stealing the re-register from you. might want to enum all your versions on the drive.
Back to top
View user's profile Send private message
Bonji
KiXforms Aficionado
KiXforms Aficionado


Joined: 10 Mar 2003
Posts: 393
Location: Virginia

PostPosted: Mon Aug 02, 2004 4:40 pm    Post subject: Reply with quote

To get this to work over the internet, I had to specify the internet accessible IP address on the server. Then I was able to connect and send text. Worked like a champ!

[EDIT] My localhost connection still worked, too. The only thing I have to verify from here is that a connection from a different computer on the same LAN will work (a connection needing to use the local IP vs the internet IP).

_________________
-Ben


Last edited by Bonji on Mon Aug 02, 2004 4:41 pm; edited 1 time in total
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    KiXforms Forum Index -> Discussion All times are GMT
Goto page Previous  1, 2, 3  Next
Page 2 of 3

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


Powered by phpBB © 2001, 2005 phpBB Group