udp服务器c语言源代码,UDPClient C语言的实现过程

UDPClient C语言的实现过程

UDPClient程序是我们经常会使用的程序。很多语言教程中,都有挂怒这方面的应用讲解。现在我们就来讲解一下如何用C语言实现UDPClient的步骤。现在让我们仔细来看看具体的编写UDPClient程序的步骤

1)初始化sockaddr_in结构的变量,并赋值。这里使用“8888”作为连接的服务程序的端口,从命令行参数读取IP地址,并且判断IP地址是否符合要求。

2)使用socket)来建立一个UDP socket,第二个参数为SOCK_DGRAM。

3)使用connect)来建立与服务程序的连接。与TCP协议不同,UDP的connect)并没有与服务程序三次握手。上面说了UDP是非连接的,实际上也可以是连接的。使用连接的UDP,kernel可以直接返回错误信息给用户程序,从而避免由于没有接收到数据而导致调用recvfrom)一直等待下去,看上去好像客户程序没有反应一样。

4)向服务程序发送数据,因为使用连接的UDP,所以使用write)来替代sendto)。这里的数据直接从标准输入读取用户输入。

5)接收服务程序发回的数据,同样使用read)来替代recvfrom)。

6)处理接收到的数据,这里是直接输出到标准输出上。

udpclient.c程序内容:

#include

#include

#include

#include

#include

#include

#include

#include

#define MAXLINE 80

#define SERV_PORT 8888

voiddo_cliFILE*fp,in

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的使用 C 语言实现UDP 服务器和客户端的示例代码,可以用于实现 client 和 local server 之间的通信。 UDP 服务器: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <unistd.h> #define PORT 8080 #define MAXLINE 1024 int main() { int sockfd; char buffer[MAXLINE]; char *hello = "Hello from server"; struct sockaddr_in servaddr, cliaddr; // 创建 socket 描述符 if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { perror("socket creation failed"); exit(EXIT_FAILURE); } memset(&servaddr, 0, sizeof(servaddr)); memset(&cliaddr, 0, sizeof(cliaddr)); // 指定服务器地址和端口号 servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = INADDR_ANY; servaddr.sin_port = htons(PORT); // 绑定 socket 到服务器地址和端口号 if (bind(sockfd, (const struct sockaddr *)&servaddr, sizeof(servaddr)) < 0) { perror("bind failed"); exit(EXIT_FAILURE); } int len, n; len = sizeof(cliaddr); // 接收来自客户端的数据 n = recvfrom(sockfd, (char *)buffer, MAXLINE, MSG_WAITALL, (struct sockaddr *)&cliaddr, &len); buffer[n] = '\0'; printf("Client : %s\n", buffer); // 向客户端发送数据 sendto(sockfd, (const char *)hello, strlen(hello), MSG_CONFIRM, (const struct sockaddr *)&cliaddr, len); printf("Hello message sent.\n"); close(sockfd); return 0; } ``` UDP 客户端: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <unistd.h> #define PORT 8080 #define MAXLINE 1024 int main() { int sockfd; char buffer[MAXLINE]; char *hello = "Hello from client"; struct sockaddr_in servaddr; // 创建 socket 描述符 if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { perror("socket creation failed"); exit(EXIT_FAILURE); } memset(&servaddr, 0, sizeof(servaddr)); // 指定服务器地址和端口号 servaddr.sin_family = AF_INET; servaddr.sin_port = htons(PORT); servaddr.sin_addr.s_addr = INADDR_ANY; int n, len; len = sizeof(servaddr); // 向服务器发送数据 sendto(sockfd, (const char *)hello, strlen(hello), MSG_CONFIRM, (const struct sockaddr *)&servaddr, len); printf("Hello message sent.\n"); // 接收来自服务器的数据 n = recvfrom(sockfd, (char *)buffer, MAXLINE, MSG_WAITALL, (struct sockaddr *)&servaddr, &len); buffer[n] = '\0'; printf("Server : %s\n", buffer); close(sockfd); return 0; } ``` 运行以上代码,UDP 客户端会向 UDP 服务器发送 "Hello from client",UDP 服务器会接收到该数据并输出到终端,然后 UDP 服务器会向 UDP 客户端发送 "Hello from server",UDP 客户端会接收到该数据并输出到终端。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值