TCP/IP Programming Manual
optlen = sizeof(optval);
if (setsockopt(channel,SOL_SOCKET,SO_DONTROUTE,
(char *)&optval,optlen) < 0)
perror("setsockopt(DONTROUTE)");
#endif
#ifdef SETBUF
printf("\nExecute SETSOCKOPT to increase socket buffering\n");
optlen = sizeof(optval);
optval = 10*1024;
if (setsockopt(channel,SOL_SOCKET,SO_RCVBUF,
(char *)&optval,optlen) < 0)
perror("setsockopt(RCVBUF)");
optlen = sizeof(optval);
optval = 10*1024;
if (setsockopt(channel,SOL_SOCKET,SO_SNDBUF,
(char *)&optval,optlen) < 0)
perror("setsockopt(RCVBUF)");
#endif
printf("\nExecute GETSOCKOPT to determine socket options\n");
optlen = sizeof(optval);
if (getsockopt(channel,SOL_SOCKET,SO_BROADCAST,
(char *)&optval,&optlen) < 0)
perror("getsockopt(BROADCAST)");
else
printf(" Broadcast mode is turned %s\n",optval ? "ON" : "OFF");
optlen = sizeof(optval);
if (getsockopt(channel,SOL_SOCKET,SO_DONTROUTE,
(char *)&optval,&optlen) < 0)
perror("getsockopt(DONTROUTE)");
else
printf(" Dontroute mode is turned %s\n",optval ? "ON" : "OFF");
optlen = sizeof(optval);
if (getsockopt(channel,SOL_SOCKET,SO_RCVBUF,
(char *)&optval,&optlen) < 0)
perror("getsockopt(RCVBUF)");
else
printf(" Receive buffer size is %d bytes\n",optval);
optlen = sizeof(optval);
if (getsockopt(channel,SOL_SOCKET,SO_SNDBUF,
(char *)&optval,&optlen) < 0)
perror("getsockopt(SNDBUF)");
else
printf(" Send buffer size is %d bytes\n",optval);
#ifdef CONNECTIONLESS
printf("\nUsing CONNECTIONLESS version...\n");
#else
printf("\nUsing CONNECTED version...\n");
len = sizeof(remote);
if (connect(channel, &remote, len) < 0) {
perror ("connect");
exit (0);
}
#endif
printf("\nExecute GETSOCKNAME to determine my socket's address and \
port\nAddress is zero if CONNECTIONLESS\n");
optlen = sizeof(me);
if (getsockname(channel,(struct sockaddr *)&me,&optlen) < 0)
perror("getsockname");
else
printf("My socket: family=%d port=%d addr=%lx\n",
me.sin_family,me.sin_port,me.sin_addr.s_addr);
/*
* Write it over the network
Programs Using AF_INET Sockets 221