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










