📄 tcpclient.c
字号:
/*tcpClient.c - TCP 客户端程序*/
/* includes */
#include "vxWorks.h"
#include "sockLib.h"
#include "inetLib.h"
#include "stdioLib.h"
#include "strLib.h"
#include "hostLib.h"
#include "ioLib.h"
#include "tcpExample.h"
/*********************************************************************
*
*tcpClient -- 通过TCP套接字向服务器发送信息
*
*本程序通过TCP套接字连接到TCP服务器并发送用户提供的信息给服务器.
*
*参数: serverName:服务器名或IP地址
*
*可选的,还可以请求服务器返回应答信息
*
*
*返回值OK或ERROR
*
***********************************************************************/
STATUS tcpClient(char* serverName)
{
struct REQUEST myRequest; /*发送到服务器的请求*/
struct sockaddr_in serverAddr; /*服务器套接字地址*/
char reply; /*如果为TRUE,服务器返回应答信息*/
int sockAddrSize; /*套接字地址数据结构大小*/
int sFd; /*套接字文件描述符*/
int mLen; /*信息长度*/
char replyBuf[REPLY_MSG_SIZE]; /*应答信息缓存区*/
/*生成客户端套接字*/
if((sFd = socket(AF_INET,SOCK_STREAM,0)) == ERROR) /*SOCK_STREAM表明生成流式套接字*/
{
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);
}
/*连接到服务器*/
if(connect(sFd, (struct sockaddr*)&serverAddr, sockAddrSize) == ERROR)
{
perror("connect \n");
close(sFd);
return(ERROR);
}
/*产生请求,提示用户输入信息*/
printf("Message to send : \n");
mLen= read(STD_IN,myRequest.message,REQUEST_MSG_SIZE);
myRequest.msgLen = mLen;
myRequest.message[mLen - 1] = '\0';
printf("Would you like a reply(Y or N) : \n");
read(STD_IN,&reply,1);
switch(reply)
{
case 'y':
case 'Y':
myRequest.reply= TRUE;
break;
default:
myRequest.reply= FALSE;
break;
}
/*发送请求到服务器*/
if(write(sFd, (char *)&myRequest, sizeof(myRequest)) == ERROR)
{
perror("write \n");
close(sFd);
return(ERROR);
}
/*如果选择了返回应答信息, 则读取并显示返回信息*/
if(myRequest.reply)
{
if(read(sFd, replyBuf, REPLY_MSG_SIZE) < 0)
{
perror("read \n");
close(sFd);
return(ERROR);
}
printf("Message from server: \n%s\n", replyBuf);
}
close(sFd);
return(OK);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -