Re: VB.NET Socket - Multiple clients to server

From: User (guest_at_guest.com)
Date: 08/18/04


Date: Wed, 18 Aug 2004 15:52:39 GMT

Let's say that I run this raw code.

Private MyTcpListener As System.Net.Sockets.TcpListener
Private MySocket As Socket

Dim MyPort as int32
MyPort = 1000

Dim ipHostInfo As IPHostEntry = Dns.GetHostByName(Dns.GetHostName())
   Dim MyIPAddress As IPAddress = ipHostInfo.AddressList(0)
Dim localEndPoint As New IPEndPoint(MyIPAddress, MyPort)

MyTcpListener = New Net.Sockets.MyTcpListener(localEndPoint)
MyTcpListener.Start()

[...]

'Looping periodically on MyTcpListener to see if any client try to
' connect
If Not (MyTcpListener.Pending()) Then
    Exit Sub
else
    MySocket = MyTcpListener.AcceptSocket
End If

For a new connection MySocket will containt information about the new
client information (port, IP).

If I want many clients being able to connect to this server, do I have
to create an array of MySocket? Then any new accepted client would be
indexed (from i=0 to n, n=max connect allowed). That index would be
useful for me.

And I wouldn't have to care anymore with port number? Is that right?

How would I connect a "datareceive event" from any client?

Thanks you!

Michael D. Ober wrote:

> In TCP communications, the listener application binds to an advertised port.
> When a client connects to that port, the IP Stack sends a port number to the
> server. The "accept" call binds that port as well as a new port on the
> server and then sends back the new port on the server. Basically what
> happens is that the communications link is taken to a random port pair - one
> on the client and one on the server. Accept then resets the listener to
> wait for the next connection request. To keep track of your clients, you
> simply need to keep track of the sockets used by accept.
>
> Mike Ober.
>
> "User" <guest@guest.com> wrote in message
> news:OPJUc.25312$X12.22077@edtnps84...
>
>>I thought that a port number was unique to one socket? Is that right?
>>
>>In my implementation, I use the port number as an identifier for the
>>client connection. If I use one socket, is there a unique identifier
>>for any accepted connection?
>>
>>Thank you!
>>
>>
>>
>>Jon Skeet [C# MVP] wrote:
>>
>>
>>>User <guest@guest.com> wrote:
>>>
>>>
>>>>I tried to find the information over the internet but didn't find any
>>>>answers.
>>>>
>>>>I'm looking for a server side code example of winsock accepting many
>>>>clients. I know that in VB.NET it is not implemented like in VB6. What
>>>>I've done is one client per socket. Meaning that each client used a
>>>>different port on the server, but I find it annoying.
>>>>
>>>>I would like to have all clients to connect to the server using one
>
> port.
>
>>>
>>>Just because they're using different sockets doesn't mean that clients
>>>have to connect to different ports. Just use MyTcpListener and call keep
>>>AcceptTcpClient or AcceptSocket and everything will be fine.
>>>
>>
>
>



Relevant Pages

  • Re: Winsock / Sockets programming
    ... At the client side receive message from the server only, ... socket on one port. ... And connect everybody to that socket like a big ...
    (microsoft.public.vc.mfc)
  • problems with SocketException
    ... so one of them is a client and the other one is ... I have used asynchronous socket examples found at ... Public Shared Sub Connect(ByVal address As String, ByVal port As Integer, ... Dim ipHostInfo As IPHostEntry = Dns.Resolve ...
    (microsoft.public.dotnet.languages.vb)
  • Re: Possible bug in .Net 2.0 udp sockets?
    ... assumption that the port which the client sees is the same as the port ... get the correct endpoints under simple circumstances. ... multiple outstanding BeginReceiveFrom's on a UDP socket are not supported, ...
    (microsoft.public.dotnet.framework)
  • Re: Winsock / Sockets programming
    ... At the client side receive message from the server only, ... A target of a network connection is a <ip-address, socket#> pair. ... outside the walls of your environment, you should apply to IANA for a Registered Port ... the client has to know the IP address of each potential server. ...
    (microsoft.public.vc.mfc)
  • Re: VB.NET Socket - Multiple clients to server
    ... Private MySocket As Socket ... Dim ipHostInfo As IPHostEntry = Dns.GetHostByName) ... 'Looping periodically on MyTcpListener to see if any client try to ... And I wouldn't have to care anymore with port number? ...
    (microsoft.public.dotnet.general)