HPlogo HP 9000 Networking: BSD Sockets Interface Programmer's Guide > Chapter 4 Using Internet Datagram Sockets

Overview

» 

Technical documentation

Complete book in PDF

 » Table of Contents

 » Glossary

 » Index

Internet UDP datagram sockets provide bidirectional flow of data with record boundaries preserved. However, messages are not guaranteed to be reliably delivered. If a message is delivered, there is no guarantee that it is in sequence and unduplicated, but the data in the message are guaranteed to be intact.

Datagram sockets allow you to send and receive messages without establishing a connection. Each message includes a destination address. Processes involved in data transfer are not required to have a client-server relationship; the processes can be symmetrical.

Unlike stream sockets, datagram sockets allow you to send to many destinations from one socket, and receive from many sources with one socket. There is no two-process model, although a two-process model is the simplest case of a more general multiprocess model. The terms server and client are used in this chapter only in the application sense. There is no difference in the calls that must be made by the processes involved in the data transfer.

For example, you might have a name server process that receives host names from clients all over a network. That server process can send host name and internet address combinations back to the clients. This can all be done with one UDP socket.

The simplest two-process case is used in this chapter to describe BSD Sockets using datagram sockets.

The following table lists the steps involved in exchanging data between datagram sockets.

Table 4-1 Exchanging Data Between Internet Datagram Sockets

Client Process Activity

System Call Used

Server Process Activity

System Call Used

create a socket

socket()

create a socket

socket()

bind a socket address

bind()

bind a socket address

bind()

send message

sendto() or sendmsg()

receive message

recvfrom() or recvmsg()

send message

sendto() or sendmsg()

receive message

recvfrom() or recvmsg()

 

Each of these steps or activities is described in more detail in the following sections. The description of each activity specifies a system call and includes:

  • What happens when the system call is used.

  • When to make the call.

  • What the parameters do.

  • How the call interacts with other BSD Sockets system calls.

  • Where to find details on the system call.

The datagram socket program examples are at the end of these descriptive sections. You can refer to the example code as you work through the descriptions.

© 1997 Hewlett-Packard Development Company, L.P.