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

📄 udpclient.c

📁 2410/vxworks/tornado下的基本实验包括 serial,ramdrv,interrupt,multi-tasking,FTP,TCP,UDP
💻 C
字号:
/*udpClient.c - UDP 客户端程序*/

/* includes */

#include "vxWorks.h"
#include "sockLib.h"
#include "inetLib.h"
#include "stdioLib.h"
#include "strLib.h"
#include "hostLib.h"
#include "ioLib.h"
#include "udpExample.h"

/*********************************************************************
*
*udpClient -- 通过UDP套接字向服务器发送信息
*
*本程序通过UDP套接字给服务器发送用户定义的信息
*
*参数: serverName:服务器名或IP地址
*
*可选的,还可以请求服务器显示信息
*
*
*返回值OK或ERROR
*
***********************************************************************/

STATUS udpClient(char * serverName)
{
	struct REQUEST myRequest;                  /*发送到服务器的请求*/
	struct sockaddr_in serverAddr;             /*服务器套接字地址*/
	char display;                                         /*如果为TRUE,服务器将打印信息*/
	int    sockAddrSize;                              /*套接字地址数据结构大小*/
	int    sFd;                                              /*套接字文件描述符*/
	int    mLen;                                           /*信息长度*/

    /*生成客户端套接字*/

	if((sFd = socket(AF_INET,SOCK_DGRAM,0)) == ERROR)               /*SOCK_DGRAM表明生成数据报套接字*/	
		{
			perror("socket\n");
			return(ERROR);
		}

	/*无绑定 - 本地端口地址为动态*/

	/*生成服务器套接字地址*/

	sockAddrSize = sizeof(struct sockaddr_in);
	bzero((char*)&serverAddr,sockAddrSize);
	serverAddr.sin_len = (u_char)sockAddrSize;              
	serverAddr.sin_family = AF_INET;								/*服务器为AF_INET地址域*/
	serverAddr.sin_port = htons(SERVER_PORT_NUM);     /*服务器端口号*/

	/*服务器IP地址*/
	
	if(((serverAddr.sin_addr.s_addr = inet_addr(serverName)) == ERROR) &&
		((serverAddr.sin_addr.s_addr = hostGetByName(serverName)) == ERROR))
		{
			perror("unknown server name\n");
			close(sFd);
			return(ERROR);
		}

	/*产生请求,提示用户输入信息*/

	printf("Message to send : \n");
	mLen= read(STD_IN,myRequest.message,REQUEST_MSG_SIZE);
	myRequest.message[mLen - 1] = '\0';

	printf("Would you like the server to display your message(Y or N) : \n");
	read(STD_IN,&display,1);
	switch(display)
		{
			case 'y':
			case 'Y':
				myRequest.display = TRUE;
				break;
			default:
				myRequest.display = FALSE;
				break;
		}

	/*发送请求到服务器*/
	if(sendto(sFd,(caddr_t)&myRequest,sizeof(myRequest),0,
		(struct sockaddr*)&serverAddr,sockAddrSize) == ERROR)
		{
			perror("sendto");
			close(sFd);
			return(ERROR);
		}

	close(sFd);
	return(OK);
	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -