📄 sockhelp.c
字号:
/* sockHelp - handy tools to use at the shell prompt *//* Copyright 1984-1993 Wind River Systems, Inc. *//*modification history--------------------01c,17feb98,dlk flushed input before reading response.01a,24apr95,bss changed printf() to printErr() in sockAddrPrompt().01b,06dec94,bss cleaned up.01a,???????,??? written.*//*DESCRIPTIONThis module provides several routines which allow students tomanipulate sockets from the VxWorks shell.*//* includes */#include "vxWorks.h"#include "fioLib.h"#include "hostLib.h"#include "inetLib.h"#include "netinet/in.h"#include "stdio.h"#include "string.h"#include "sys/socket.h"#include "sys/types.h"#include "ioLib.h"/******************************************************************************* * * sockAddrPrompt - prompt user for values to be stored in a * struct sockaddr_in. */void sockAddrPrompt ( struct sockaddr_in * pSockAddr) { char string [100]; u_long inet; int portNum; char inetAddr [INET_ADDR_LEN]; /* make sure address pointer was specified */ if (pSockAddr == NULL) { printErr ("usage: sockAddrPrompt addr\n"); return; } printf ("Type <CR> to leave field unchanged:\n\n"); /* prompt for internet address */ ioctl (STD_IN, FIORFLUSH, 0); do { inet_ntoa_b (pSockAddr->sin_addr, inetAddr); printf ("sin_addr -- Enter inet address or host name [%s]: ", inetAddr); fioRdString (STD_IN, string, sizeof (string)); if (strlen (string) == 0) inet = pSockAddr->sin_addr.s_addr; else { inet = hostGetByName (string); if (inet == ERROR) { inet = inet_addr (string); if (inet == ERROR) printErr ("invalid inet address: %s\n", string); } } } while (inet == ERROR); /* prompt for port number */ printf ("sin_port -- Enter port number [%d]: ", ntohs(pSockAddr->sin_port)); fioRdString (STD_IN, string, sizeof (string)); if (strlen (string) == 0) portNum = pSockAddr->sin_port; else sscanf (string, "%d", &portNum); pSockAddr->sin_family = AF_INET; pSockAddr->sin_port = htons (portNum); pSockAddr->sin_addr.s_addr = inet; bzero (pSockAddr->sin_zero, sizeof (pSockAddr->sin_zero)); }/******************************************************************************* * * sockAddrShow - display contents of a struct sockaddr_in. */void sockAddrShow (struct sockaddr_in *pSockAddr) { char inetAddr [INET_ADDR_LEN]; inet_ntoa_b (pSockAddr->sin_addr, inetAddr); printf ("sin_family = %d\n", pSockAddr->sin_family); printf ("sin_addr = %s\n", inetAddr); printf ("sin_port = %d\n", ntohs (pSockAddr->sin_port)); }/*************************************************************** inetAddrInit - Initialize a sockaddr_in structure*** RETURNS: OK, or ERROR if host name is invalid.*/ STATUS inetAddrInit ( struct sockaddr_in * pAddr, char * pHost, int port ) { u_long inet; bzero ((char *) pAddr, sizeof (struct sockaddr_in)); if ((inet = hostGetByName (pHost)) == ERROR) { if ((inet = inet_addr (pHost)) == ERROR) return (ERROR); } pAddr->sin_family = AF_INET; pAddr->sin_port = htons (port); pAddr->sin_addr.s_addr = inet; return (OK); }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -