网络编程——UDP编程

Posted it8343

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网络编程——UDP编程相关的知识,希望对你有一定的参考价值。

一个简单的聊天代码:运行结果:

技术分享图片

在这个程序之中,由于recvfrom函数拥塞函数,没有数据时会一直阻塞,所以客户端和服务器端只能通过一回一答的方式进行信息传递。严格的讲UDP没有明确的客户端和服务端,谁先进行数据传输,谁就是客户端,客户端也有可能是服务器端。

代码1:

 1 #include"common.h"
 2 
 3 int main()
 4 {
 5     int fd;int saddr_len;
 6     int ret;
 7     char buf[1024];
 8     struct sockaddr_in saddr;
 9 
10     fd = socket(AF_INET, SOCK_DGRAM, 0);
11     if(fd < 0)
12     {
13         printf("create socket fail!
");
14         return -1;
15     }
16 
17     saddr.sin_family=AF_INET;
18     saddr.sin_port=htons(9000);
19     inet_pton(AF_INET,"192.168.6.128",&saddr.sin_addr.s_addr);
20     
21     while(1)
22     {
23         printf("cli:");
24         gets(buf);
25         ret=sendto(fd,buf,1024,0,(struct sockaddr*)&saddr,sizeof(saddr));
26     
27         saddr_len=sizeof(saddr);
28         recvfrom(fd,buf,1024,0,(struct sockaddr*)&saddr,&saddr_len);
29     printf("ser:%s
",buf);
30     }
31 
32     close(fd);
33 
34     return 0;
35 }

代码2:

#include"common.h"

int main()
{
    int fd;
    int ret;
    int addr_len;
    struct sockaddr_in saddr,caddr;
    char buf[1024];

    fd=socket(AF_INET,SOCK_DGRAM,0);
    if(fd<0)
    {
        perror("socket");
    }
    saddr.sin_family=AF_INET;
    saddr.sin_port=htons(9000);
    inet_pton(AF_INET,"192.168.6.128",&saddr.sin_addr.s_addr);

    ret=bind(fd,(struct sockaddr*)&saddr,sizeof(saddr));
    if (ret<0)
    {
        perror("bind");
    }

    addr_len=sizeof(caddr);
    while(1)
    {
        
        ret=recvfrom(fd,buf,1024,0,(struct sockaddr*)&caddr,&addr_len);
        if(ret==-1)
        {
            perror("cecvfrom");
        }

        printf("cli:%s
",buf);
        printf("ser:");
        gets(buf);
        sendto(fd,buf,1024,0,(struct sockaddr*)&caddr,sizeof(caddr));
    
    }
    close(fd);
    return 0;
}
            

 

以上是关于网络编程——UDP编程的主要内容,如果未能解决你的问题,请参考以下文章

Linux:UDP Socket编程(代码实战)

网络LinuxLinux网络编程-TCP,UDP套接字编程及代码示范

网络LinuxLinux网络编程-TCP,UDP套接字编程及代码示范

UDP服务器客户端编程流程

VSCode自定义代码片段——JS中的面向对象编程

VSCode自定义代码片段9——JS中的面向对象编程