UDP服务器客户端相互通信

UDP服务器、客户端之间的相互通信

之前的版本只能实现UDP服务器之间单发单收,此版本能实现UDP服务器和客户端之间的相互通信。

见下面的程序:

udp_server.c

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <errno.h>
#include <arpa/inet.h>

#define PORT 3333

int main()
{
    int sockfd;
    struct sockaddr_in server_addr;
    struct sockaddr_in client_addr;
    int addrlen = sizeof(struct sockaddr);
    int addrinlen = sizeof(struct sockaddr_in);
    int recvbytes;
    char buf[512];
    char buf1[1024] = {0};

    if((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0)
    {
        fprintf(stderr, "socket error:%s\n", strerror(errno));
	exit(1);
    }

    bzero(&server_addr, sizeof(struct sockaddr_in));
    server_addr.sin_family = AF_INET;
    server_addr.sin_addr.s_addr = htonl(INADDR_ANY);
    server_addr.sin_port = hton
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
UDP(User Datagram Protocol)是一种面向无连接的传输层协议,它不保证数据传输的可靠性,但传输效率高,适用于对实时性要求较高、数据传输量较小的场景。在使用UDP进行通信时,需要通过socket API来实现数据的发送和接收。 UDP客户服务器之间的通信过程可以分为以下几个步骤: 1. 创建UDP socket 在客户服务器都需要创建一个UDP socket,用于发送和接收数据。可以使用socket()函数创建socket,其参数指定协议族、socket类型和协议编号。 2. 绑定socket 在服务器需要将socket绑定到一个本地地址上,这样客户才能够通过该地址和口号来访问服务器。可以使用bind()函数将socket与一个IP地址和口号绑定。 3. 发送数据 客户可以使用sendto()函数向服务器发送数据,其中需要指定目标地址和口号,以及要发送的数据内容。发送时,数据会被拆分成若干个数据包进行传输。 4. 接收数据 服务器可以使用recvfrom()函数从客户接收数据,其中需要指定一个缓冲区来存储接收到的数据,以及发送方的地址和口号。由于UDP是无连接的,因此接收到的数据包可能不是按照发送的顺序到达的。 5. 关闭socket 通信结束后,需要使用close()函数关闭socket,释放相关的资源。 UDP通信的优点是传输效率高,适用于对实时性要求较高、数据传输量较小的场景,但缺点是不保证数据传输的可靠性,因此在数据传输过程中可能会出现丢包、重复等问题。为了保证数据传输的可靠性,可以使用TCP协议进行通信

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值