Library tutorials & articles

Introduction to TCP/IP

User Datagram Protocol

Unlike TCP, the User Datagram Protocol (UDP) does not present data as a stream of bytes, nor does it require that you establish a connection with another program in order to exchange information. Data is exchanged in discrete units called datagrams, which are similar to IP datagrams. In fact, the only features that UDP offers over raw IP datagrams are port numbers and an optional checksum.

UDP is sometimes referred to as an unreliable protocol because when a program sends a UDP datagram over the network, there is no way for it to know that it actually arrived at it's destination. This means that the sender and receiver must typically implement their own application protocol on top of UDP. Much of the work that TCP does transparently (such as generating checksums, acknowledging the receipt of packets, retransmitting lost packets and so on) must be performed by the application itself.

With the limitations of UDP, you might wonder why it's used at all. UDP has the advantage over TCP in two critical areas: speed and packet overhead. Because TCP is a reliable protocol, it goes through great lengths to insure that data arrives at it's destination intact, and as a result it exchanges a fairly high number of packets over the network. UDP doesn't have this overhead, and is considerably faster than TCP. In those situations where speed is paramount, or the number of packets sent over the network must be kept to a minimum, UDP is the solution.

Comments

  1. 25 Aug 2006 at 14:25

    hi

    This is possible using threads in the client program. the client can generate parallel connections using threads. so u can create multiple clients in the same system.


    In the server side, you use two sockets. One for receive the data and another for response to corresponding clients. Use the FDSET, FDISSET functions to achieve this apps. This is reliable one
    Hope I may answered your question.

    Karthik









  2. 05 Apr 2006 at 08:19

    hi i want to make socket connection for the multiple clients like i want to send the data to the server to the multiple clients how i will be able to do that. IS there anybody else who can help me. I am able to do that by socket programming but only in single system when i want to do that on multiple system then it is not possible.is there any one? its very needed.................................... thanks and bye

     

  3. 06 Feb 2006 at 12:22

    Hi,


    Iam developing the socket application.In this the remote host is sending messages.But iam not able to pick all the messages sent by the remote host.If remote is sending 10 msgs,then iam able to pick 2 or 3 msgs.pls tell me,what could be the reason for that asap.


    Thank you.


  4. 15 Dec 2004 at 02:56
    there would b two applications one will be at server the other will be at client side
    i m sending this code asuming that u have some prior knowledge about network programming
    include this code at server side


    Private Sub listen_Click()

    Winsock1.LocalPort = 1002
    Winsock1.listen

    End Sub


    Private Sub cmdsend_Click()
    Winsock1.SendData chattxtbox.Text
    txtwindow.Text = txtwindow.Text & vbNewLine & chattxtbox.Text
    chattxtbox.Text = ""


    txtwindow.SelStart = Len(txtwindow)


    End Sub

    Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
    Winsock1.Close
    Winsock1.Accept requestID

    End Sub

    Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
    Dim txtwindowdata As String
    Winsock1.GetData txtwindowdata

    txtwindow.Text = txtwindow.Text & vbNewLine & txtwindowdata
    txtwindow.SelStart = Len(txtwindow)



    End Sub

    //include this one at client siderivate Sub cmdconnect_Click()

    Winsock1.RemoteHost = "127.0.0.1"
    Winsock1.RemotePort = 1002
    Winsock1.Connect


    End Sub




    Private Sub cmdsend_Click()
    Winsock1.SendData chattxtbox.Text
    rectxtwindow.Text = rectxtwindow.Text & vbNewLine & rectxtwindow.Text
    chattxtbox.Text = ""


    End Sub


    Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
    Dim txtfromserver As String
    Winsock1.GetData txtfromserver
    rectxtwindow.Text = rectxtwindow.Text & vbNewLine & txtfromserver
    rectxtwindow.SelStart = Len(rectxtwindow)



    End Sub

    Private Sub Winsock1_Connect()
    MsgBox "Connecting to Server....Plz stay  far n WAIT"
    End Sub


    this will make a client server chat applicatin with in a LAN

  5. 27 Aug 2004 at 01:17

    Hi. I read ur message. I'm doing a (socket programming) chatty client/server messenger program too and I need lots of help. I heard you have done it. Could u send me ur source code and i could refer to it. Thanks alot it will help me greatly. By the way i'm using tcp.  

  6. 24 Mar 2004 at 15:14
    I ran into this problem a long time ago, what you need to do is throw in a DoEvents call in the place where your server is handling the incomming and outgoing traffic.  I haven't made anything like that for awhile, but I'm pretty sure you do it in your loops, like:

    example:

    for each.. blah blah
    Winsock1.SendData blah
    DoEvents
    end for
  7. 25 Jan 2004 at 07:53

    Hi...


    im new to tcp programming using winsock control in Vusual Basic.
    i tried a client server chat program, in which there is a client program running and its
    communicting with a server program. when i tried with two clients communicating thru a server program..its not working...can you help me....please send the source code also..


    By
    Faisal

  8. 25 Aug 2003 at 08:58

    I only speak a lite bit of English


    I need to know the name of the file on Windows to define a
    new LocalPort (UDP port) for a new application (Client/Server) of
    Files.


    Mi lenguaje es el Castellano.


    Thanks Javier

  9. 06 May 2003 at 18:17

    If you're using SocketWrench, there's an HTTP client and server example that's included that could probably serve as a foundation for what you're interested in doing. If you have any specific questions, I'd be happy to answer them for you.

  10. 23 Apr 2003 at 06:07

    I am a new member and my question might have been asked before but i can not find it in the archives.
    But if anyone would be able to help, please do. I would be greatful.
    Q: I have to create a (http like) protocol to enable the client communicate with a server. I know the basics but would be greatful for any ideas. Thanks

  11. 16 Dec 2002 at 10:20

    How are you broadcasting? Are you using TCP/IP or UDP? I have sent broadcast messages using UDP just by using the broadcast address 255.255.255.255 so that the packet goes everywhere. I had problems prior to using this when the PC's were in different domains. I dont know if this helps!

  12. 15 Nov 2002 at 16:27

    i created a client/server application using winsock, and everything works fine except if i try to send a message to all the clients from the server, only the last client actually recieves the message. after much research i found the service pack 4 for VB resolves this issue...but it only resolved the issue if i use my computer (that has VB) as the server.... i need to use a computer that does not have VB to be the server. Can anyone help me!!!!!

  13. 01 Jan 1999 at 00:00

    This thread is for discussions of Introduction to TCP/IP.

Leave a comment

Sign in or Join us (it's free).

Catalyst Development
AddThis

Related discussion

Related podcasts

  • Scott talks to Martin Fowler and David Heinemeier Hansson

    Scott sits down with Martin Fowler of Thoughtworks and David Heinemeier Hansson of 37 signals and talks about beauty, making developers happen, the death (or life) of HTML, the future of Microsoft, and asks if we should care about Rich Internet Applications. DHH is the creator of the Ruby on Rail...

Events coming up

We'd love to hear what you think! Submit ideas or give us feedback