通过VxWorks实现网络套接字通信
作者:佚名
上传时间:2023-03-20
运行软件:Wind River Systems
软件版本:VxWorks 7
版权申诉
本示例代码演示了如何使用VxWorks操作系统实现网络套接字通信。通过创建服务器和客户端,实现数据的传输。本示例使用的是TCP/IP协议。
#include <vxWorks.h>
#include <stdio.h>
#include <ioLib.h>
#include <sockLib.h>
#include <inetLib.h>
#define SERVER_PORT_NUM 5001
#define SERVER_MAX_CONNECTIONS 4
int serverTask(void);
void vxworks_socket_communication_demo()
{
//启动服务器任务
taskSpawn("tServer", 50, VX_FP_TASK, 20000, serverTask,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
//等待服务器完成初始化
taskDelay(1000);
//启动客户端任务,向服务器发送数据
taskSpawn("tClient", 50, VX_FP_TASK, 20000, clientTask,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
return;
}
int serverTask (void)
{
int listenSock, acceptSock;
char buffer[256];
struct sockaddr_in serverAddr, clientAddr;
int sockAddrSize;
int nRead;
//创建套接字
if ((listenSock = socket(AF_INET, SOCK_STREAM, 0)) == ERROR)
{
perror("socket");
return(ERROR);
}
//绑定服务器端口
serverAddr.sin_family = AF_INET;
serverAddr.sin_port = htons(SERVER_PORT_NUM);
serverAddr.sin_addr.s_addr = htonl(INADDR_ANY);
bzero(serverAddr.sin_zero, sizeof(serverAddr.sin_zero));
if (bind(listenSock, (struct sockaddr *)&serverAddr, sizeof(serverAddr)) == ERROR)
{
perror("bind");
return(ERROR);
}
//开始监听
if (listen(listenSock, SERVER_MAX_CONNECTIONS) == ERROR)
{
perror("listen");
return(ERROR);
}
sockAddrSize = sizeof(clientAddr);
//等待客户端连接
if ((acceptSock = accept(listenSock, (struct sockaddr *)&clientAddr, &sockAddrSize)) == ERROR)
{
perror("accept");
return(ERROR);
}
//接收客户端数据
while ((nRead = recv(acceptSock, buffer, sizeof(buffer), 0)) > 0)
{
printf("Received %d bytes from client:\n", nRead);
printf("%s\n", buffer);
//发送响应数据
send(acceptSock, buffer, strlen(buffer), 0);
bzero(buffer, sizeof(buffer));
}
//关闭套接字
close(acceptSock);
close(listenSock);
return OK;
}
int clientTask (void)
{
int sockFd;
char buffer[256];
struct sockaddr_in sockAddr;
int sockAddrSize;
char *serverAddress = "192.168.0.2"; //服务器IP地址
//创建套接字
if ((sockFd = socket(AF_INET, SOCK_STREAM, 0)) == ERROR)
{
perror("socket");
return(ERROR);
}
//设置服务器地址和端口
sockAddr.sin_family = AF_INET;
sockAddr.sin_port = htons(SERVER_PORT_NUM);
inet_pton(AF_INET, serverAddress, &sockAddr.sin_addr);
//连接服务器
if (connect(sockFd, (struct sockaddr *)&sockAddr, sizeof(sockAddr)) == ERROR)
{
perror("connect");
return(ERROR);
}
//发送数据到服务器
sprintf(buffer, "Hello, this is client.");
printf("Send data to server:\n%s\n", buffer);
if (send(sockFd, buffer, strlen(buffer), 0) == ERROR)
{
perror("send");
return(ERROR);
}
bzero(buffer, sizeof(buffer));
//接收服务器响应
if (recv(sockFd, buffer, sizeof(buffer), 0) == ERROR)
{
perror("recv");
return(ERROR);
}
printf("Received data from server:\n%s\n", buffer);
//关闭套接字
close(sockFd);
return OK;
}
免责申明:文章和图片全部来源于公开网络,如有侵权,请通知删除 server@dude6.com
用户评论
相关推荐
通过VxWorks实现网络套接字通信
本示例代码演示了如何使用VxWorks操作系统实现网络套接字通信。通过创建服务器和客户端,实现数据的传输。本示例使用的是TCP/IP协议。#include <vxWorks.h>#in
VxWorks 7
Wind River Systems
2023-03-20 07:51
使用VxWorks实现网络套接字通信的示例代码
VxWorks是一款实时操作系统,常用于嵌入式系统开发。本示例演示了如何在VxWorks中使用网络套接字进行通信,包括创建套接字、绑定地址、发送和接收数据。这对于嵌入式系统中的网络通信非常有用。#i
VxWorks 7.0
VxWorks嵌入式系统
2023-11-12 03:34
网络通信套接字
对windowsphone网络通信的详细描述和源代码
ZIP
0B
2020-05-31 09:13
套接字通信实现多人网络聊天
该聊天程序由两部分组成,及客户端与服务器。利用套接字实现多人局域网聊天。感谢明日科技公司提供代码
RAR
0B
2019-01-02 20:12
MFC网络通信套接字
网络课程设计,与大家分享!网络课程设计,与大家分享!网络课程设计,与大家分享!网络课程设计,与大家分享!
rar
0B
2019-04-03 10:12
异步套接字网络通信
基于c/s的异步网络通信,有服务器,客户端,WSAAsyncSelect,客户端连接服务器,可以进行相互的通信
RAR
0B
2019-07-23 10:25
VxWorks网络编程实例:TCP套接字通信与数据传输
本示例演示在VxWorks实时操作系统中使用TCP套接字进行网络通信,并展示数据的传输过程。通过简单的服务器和客户端代码,了解VxWorks网络编程的基本原理和操作。#include <vxW
VxWorks 7
VxWorks实时操作系统
2023-12-10 04:32
套接字通信
socket的英文原义是“孔”或“插座”。作为4BDSUNIX的进程通信机制,取后一种意思。通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。在Internet上的主机一般运行了多个服
DOC
0B
2019-07-07 03:54
通过实例解析Socket套接字通信原理
Socket 的中文翻译过来就是“套接字”。Socket 就像一个电话插座,负责连通两端的电话,进行点对点通信,让电话可以进行通信,端口就像插座上的孔,端口不能同时被其他进程占用。实际上,Socket
pdf
338.28 KB
2022-01-29 14:19
C#实现套接字通信
了解socket套接字的原理
CAJ
0B
2019-07-07 03:54