|
|
|
|
CLIENT---------------------SERVER
-------------------------------------------
socket() -----------------------socket()
(bind()) -----------------------bind()
----------------------------------listen()
connect()--------------->
<-------------- -----------------accept()
send()------------------>
<-------------- -----------------recv()
send() ------------------>
---------------------------------recv()
close()
Communication addresses:
struct sockaddr_in myaddr; /* for local socket address
*/
struct sockaddr_in peeraddr; /* for peer socket address
*/
Example:
struct hostent *hp; /*ptr to host info for remote*/
--------------
peeraddr.sin_family = AF_INET;
hp = gethostbyname(argv[1])
peeraddr_in.sin_addr.s_addr
= ((struct in_addr *)(hp->h_addr))->s_addr;
Example:
struct servent *sp /* pointer to service info */
-----
sp = getservbyname ( "example", "tpc" );
peeraddr.sin_port = sp->s_port;
bind(s,addr,addrlen)
int s
struct sockaddr *addr;
int addrlen;
Example:
struct sockaddr_in sin;
s = socket(AF_INET,SOCK_STREAM,0);
sin.sin_family = AF_INET;
sin.sin_addr.s_addr = INADDR_ANY;
sin.sin_port = MYPORT;
bind ( s, &sin, sizeof(sin) );
Example:
listen (ls,5);
....................
addrlen = sizeof(sockaddr_in);
s = accept( ls, &peeraddr, &addrlen );
SOCKET s IS NOW READY TO RECEIVE DATA FROM CLIENT
recv (s, &buffer, len, 0);
............................
send (s, &buff2, len2,0);
CLIENT:
connect ( s, addr, addrlen)
int s;
struct sockaddr *addr;
int addrlen;
count = send(s,msg,flags)
int s;
char *msg;
int len,flags;
|
|
|
|