通过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