VxWorks中网络编程实现TCP协议的Socket通信

作者:佚名 上传时间:2023-05-25 运行软件:C语言 软件版本:VxWorks 7.0 版权申诉

本示例代码演示了在VxWorks系统中通过使用Socket API实现TCP协议的网络编程,包括建立连接、收发数据等基本操作,为后续网络编程开发提供基础。

#include <stdio.h>
#include <string.h>
#include <ioLib.h>
#include <sockLib.h>
#include <inetLib.h>

#define SERVER_PORT_NUM 1234
#define SERVER_HOST_ADDR "192.168.1.2"
#define MAX_BUF_SIZE 256

void tcpServer()
{
    int sockFd, newSockFd, sockAddrSize, recvLen, sendLen;
    struct sockaddr_in serverAddr, clientAddr;
    char recvBuf[MAX_BUF_SIZE];
    char sendBuf[MAX_BUF_SIZE];

    // 创建Socket
    if ((sockFd = socket(AF_INET, SOCK_STREAM, 0)) == ERROR)
    {
        perror("socket");
        return;
    }

    // 设置服务器地址信息
    bzero((char *)&serverAddr, sizeof(serverAddr));
    serverAddr.sin_family = AF_INET;
    serverAddr.sin_addr.s_addr = inet_addr(SERVER_HOST_ADDR);
    serverAddr.sin_port = htons(SERVER_PORT_NUM);

    // 绑定Socket
    if (bind(sockFd, (struct sockaddr *)&serverAddr, sizeof(serverAddr)) == ERROR)
    {
        perror("bind");
        close(sockFd);
        return;
    }

    // 监听连接请求
    if (listen(sockFd, 5) == ERROR)
    {
        perror("listen");
        close(sockFd);
        return;
    }

    sockAddrSize = sizeof(clientAddr);

    while (1)
    {
        // 接受连接请求
        if ((newSockFd = accept(sockFd, (struct sockaddr *)&clientAddr, &sockAddrSize)) == ERROR)
        {
            perror("accept");
            close(sockFd);
            return;
        }

        printf("Connection from %s, port %d\n", inet_ntoa(clientAddr.sin_addr), ntohs(clientAddr.sin_port));

        // 收取数据
        if ((recvLen = recv(newSockFd, recvBuf, sizeof(recvBuf), 0)) == ERROR)
        {
            perror("recv");
            close(newSockFd);
            continue;
        }
        recvBuf[recvLen] = '\0';
        printf("Received %d bytes: %s\n", recvLen, recvBuf);

        // 发送数据
        snprintf(sendBuf, sizeof(sendBuf), "Hello, %s", recvBuf);
        sendLen = strlen(sendBuf);
        if ((send(newSockFd, sendBuf, sendLen, 0)) != sendLen)
        {
            perror("send");
        }

        // 关闭Socket
        close(newSockFd);
    }
}

void tcpClient()
{
    int sockFd, sockAddrSize, connectStatus, recvLen, sendLen;
    struct sockaddr_in serverAddr;
    char recvBuf[MAX_BUF_SIZE];
    char sendBuf[MAX_BUF_SIZE];
    char *serverHostName = "192.168.1.2";

    // 创建Socket
    if ((sockFd = socket(AF_INET, SOCK_STREAM, 0)) == ERROR)
    {
        perror("socket");
        return;
    }

    // 设置服务器地址信息
    bzero((char *)&serverAddr, sizeof(serverAddr));
    serverAddr.sin_family = AF_INET;
    serverAddr.sin_addr.s_addr = inet_addr(serverHostName);
    serverAddr.sin_port = htons(SERVER_PORT_NUM);

    // 连接服务器
    if ((connectStatus = connect(sockFd, (struct sockaddr *)&serverAddr, sizeof(serverAddr))) == ERROR)
    {
        perror("connect");
        close(sockFd);
        return;
    }

    // 发送数据
    printf("Enter message to send: ");
    fgets(sendBuf, MAX_BUF_SIZE, stdin);
    sendLen = strlen(sendBuf);
    if ((send(sockFd, sendBuf, sendLen, 0)) != sendLen)
    {
        perror("send");
        close(sockFd);
        return;
    }

    // 接收数据
    if ((recvLen = recv(sockFd, recvBuf, sizeof(recvBuf), 0)) == ERROR)
    {
        perror("recv");
        close(sockFd);
        return;
    }
    recvBuf[recvLen] = '\0';
    printf("%s\n", recvBuf);

    // 关闭Socket
    close(sockFd);
}

void testTcp()
{
    int choice;

    while (1)
    {
        printf("1. Server\n");
        printf("2. Client\n");
        printf("0. Quit\n");
        printf("Enter choice: ");
        scanf("%d", &choice);
        getchar();

        switch (choice)
        {
        case 1:
            tcpServer();
            break;

        case 2:
            tcpClient();
            break;

        case 0:
            return;

        default:
            printf("Invalid choice\n");
        }
    }
}

免责申明:文章和图片全部来源于公开网络,如有侵权,请通知删除 server@dude6.com

用户评论
相关推荐
VxWorks网络编程实现TCP协议Socket通信
本示例代码演示了在VxWorks系统中通过使用Socket API实现TCP协议的网络编程,包括建立连接、收发数据等基本操作,为后续网络编程开发提供基础。#include <stdio.h&g
VxWorks 7.0
C语言
2023-05-25 19:20
基于TCP协议Socket通信编程实现C语言
基于TCP协议的Socket通信编程实现C语言
ZIP
2.2MB
2020-08-31 22:12
TCP协议Socket编程通信原理深度解析
本文档分析了TCP协议中利用Socket编程所使用的一些重要函数,并深入分析了Socket通信所使用的一些技术。
DOCX
108KB
2020-08-11 15:10
Python基于TCP协议socket网络编程实现
本示例代码展示了如何在Python中使用socket模块实现TCP协议的网络编程,包括服务器和客户端的搭建、连接建立、消息发送与接收等操作。通过创建基于TCP的socket网络连接,实现了消息的可靠传
Python 3.8.5
Python
2023-05-12 05:42
TCP/IP网络编程实现Socket通信
本文将介绍如何使用TCP/IP协议进行Socket编程,实现网络通信。我们将使用Java程序设计,提供示例代码并对代码进行释义。最后,我们会对本文进行总结。TCP/IP协议TCP/IP协议是一组用
JDK 14
Java
2023-04-01 12:49
socket网络编程C#实现tcp ip协议
利用tcp\ip协议,实现两个人聊天的功能,同时拥有表情的收发功能(代码中使用的物理地址,下载后更改成自己电脑中的地址就可以).
ZIP
0B
2020-02-14 05:04
socket网络编程TCP协议UDP协议传输
socket网络编程TCP协议UDP协议服务器和客户端之间的传输
RAR
0B
2019-04-27 10:07
Java实现基于TCP协议Socket通信
(1)实现了服务器和客户端之间的连接通信 (2)实现了客户端与客户端之间的连接通信
ZIP
0B
2019-01-13 22:17
VxWorks网络编程实现TCP/IP协议通讯
示例代码演示了如何使用VxWorks操作系统实现TCP/IP协议的网络编程,包括创建socket、绑定端口、监听连接和发送数据等步骤。代码在接收到客户端的连接请求后,会将收到的数据回传给客户端。#i
VxWorks 6.9
Wind River Systems
2023-03-25 18:28
VxWorks如何使用socket实现TCP通信
介绍在VxWorks操作系统中如何使用socket接口实现TCP通信,包括如何创建socket、连接和数据传输的具体实现方式。#include <vxWorks.h>#include
VxWorks 6.9
C语言
2023-03-30 19:58