HP Rp7410 BSD Sockets Interface Programmer's Guide - Page 90

Parameter, Description of Contents, INPUT Value

Page 90 highlights

Using Internet Datagram Sockets Preparing Address Variables #include struct hostent *hp; /* point to host info for name server host */ ... servaddr.sin_family = AF_INET; hp = gethostbyname (argv[1]); servaddr.sin_addr.s_addr = ((struct in_addr *)(hp->h_addr))->s_addr; The argv[1] parameter is the host name specified in the client program command line. Refer to the gethostent(3N) man page for more information on gethostbyname. Getting the Port Address for the Desired Service When a client process needs to use a service that is offered by some server process, it must send a message to the server's socket. The client process must know the port address for that socket. If the service is not in /etc/services, you must add it. getservbyname obtains the port address of the specified service from /etc/services. getservbyname and its parameters are described in the following table. Include files: System call: #include struct servent *getservbyname(name, proto) char *name, *proto; Parameter name proto Description of Contents INPUT Value pointer to a valid service name pointer to the protocol to be used service name udp or 0 if UDP is the only protocol for the service Function result: pointer to struct servent containing port address, NULL pointer (0) if failure occurs. Example: #include struct servent *sp; /* pointer to service info */ ... sp = getservbyname ("example", "udp"); servaddr.sin_port = sp->s_port; 90 Chapter 4

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • 195
  • 196

90
Chapter 4
Using Internet Datagram Sockets
Preparing Address Variables
#include <netdb.h>
struct hostent *hp; /* point to host info for name server host */
...
servaddr.sin_family = AF_INET;
hp = gethostbyname (argv[1]);
servaddr.sin_addr.s_addr = ((struct in_addr *)(hp->h_addr))->s_addr;
The
argv[1]
parameter is the host name specified in the client program
command line. Refer to the
gethostent(3N)
man page for more
information on
gethostbyname
.
Getting the Port Address for the Desired
Service
When a client process needs to use a service that is offered by some
server process, it must send a message to the server's socket. The client
process must know the port address for that socket. If the service is not
in
/etc/services
, you must add it.
getservbyname
obtains the port address of the specified service from
/etc/services
.
getservbyname
and its parameters are described in
the following table.
Include files:
#include <netdb.h>
System call:
struct servent *getservbyname(name, proto)
char *name, *proto;
Function result:
pointer to struct servent containing port address,
NULL pointer (0) if failure occurs.
Example:
#include <netdb.h>
struct servent *sp; /* pointer to service info */
...
sp = getservbyname (“example”, “udp”);
servaddr.sin_port = sp->s_port;
Parameter
Description of Contents
INPUT Value
name
pointer to a valid service
name
service name
proto
pointer to the protocol to be
used
udp
or 0 if UDP is the
only protocol for the
service