📄 udpclient.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 + -