⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sockhelp.c

📁 此程序运行在Tornado环境中,里面包含了tornado入门的基本程序,也是Vxworks入门非常好的资料,里面包括信号量,消息,队列,中断,事件,等等的示例,还有tornado环境工具如windv
💻 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.
*/

/*
DESCRIPTION
This module provides several routines which allow students to
manipulate 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 + -