zoukankan      html  css  js  c++  java
  • linux系统UDP的socket通信编程3

    我刚开始接触linux下的socket编程,边抄边理解udp socket编程,我的疑问是server不指定IP地址,client的目标IP地址是127.0.0.1,这样就可以通信吗?在同一主机下是不是不能测试?如果server默认绑定本机的IP 地址,那么开启server后,在浏览器中输入127.0.0.1:(相应端口) 也可以得到数据?我的程序如下,没有跑起来,其实我觉得我不会测试,不知道本质所以会有细节漏掉。(使用的系统是ubuntu 11.10 ,编译器GCC ,分别在同一主机下的两个终端中运行生成的.out文件。)提前感谢大家的回答,不管多少,您的回答让一个初学者非常暖心~~

    服务器程序

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    #include<stdio.h>
    #include<netinet/in.h>
    #include<arpa/inet.h>
    #include<unistd.h>
    #include<sys/types.h>
    #include<sys/socket.h>
     
    #define lport 4567
     
    int main()
    {
        int mysock,len;
        struct sockaddr_in addr;
        int i=0;
        char msg[256];
     
        int addr_len;
     
        if((mysock=socket(AF_INET,SOCK_DGRAM,0))<0)
        {
            perror("error");
            exit(1);
        }
        else
        {
            printf("socket created. ");
            printf("socket ID: %d ",mysock);
        }
        addr_len=sizeof(struct sockaddr_in);
        bzero(&addr,sizeof(addr));
        addr.sin_family=AF_INET;
        addr.sin_port=htons(lport);
        addr.sin_addr.s_addr=htonl(INADDR_ANY);
     
        if(bind(mysock,&addr,sizeof(addr))<0)
        {
            perror("connect");
            exit(1);
        }
        else
        {
            printf("bind ok. ");
            printf("local port: %d ",lport);
        }
        while(1)
        {
            bzero(msg,sizeof(msg));
            len=recvfrom (mysock,msg,sizeof(msg),0,&addr,&addr_len);
     
            printf("%d: ",i);
            i++;
            printf("message form: %s ",inet_ntoa(addr.sin_addr));
            printf("message: %s ",msg);
            sendto(mysock,msg,len,0,&addr,addr_len);
        }
        return 0;
    }

    客户机程序:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    #include<stdio.h>
    #include<netinet/in.h>
    #include<arpa/inet.h>
    #include<unistd.h>
    #include<fcntl.h>
    #include<sys/stat.h>
    #include<sys/types.h>
    #include<sys/socket.h>
     
    #define rport 4567
    #define rip "127.0.0.1"
     
    int main()
    {
        int s,len;
        struct sockaddr_in addr;
        int addr_len;
        char msg[256];
        int i=0;
     
        if((s=socket(AF_INET,SOCK_DGRAM,0))<0)
        {
            perror("error");
            exit(1);
        }
        else
        {
            printf("socket created. ");
            printf("socket id: %d ",s);
            printf("romote ip: %s ",rip);
            printf("remote port: %d ",rport);
        }
     
        len=sizeof(struct sockaddr_in);
        bzero(&addr,sizeof(addr));
        addr.sin_family=AF_INET;
        addr.sin_port=htons(rport);
        addr.sin_addr.s_addr=inet_addr(rip);
     
        while(1)
        {
            bzero(msg,sizeof(msg));
            len=read(STDIN_FILENO,msg,sizeof(msg));
            sendto(s,msg,len,0,&addr,addr_len);
            printf(" Input message: %s ",msg);
            len=recvfrom(s,msg,sizeof(msg),0,&addr,&addr_len);
     
            printf("%d :",i);
            i++;
            printf("received message: %s ",msg);
        }
        return 0;
    }
  • 相关阅读:
    个人项目-数独
    个人作业-Week1
    第0次软工作业
    路飞学城Python-Day79
    路飞学城Python-Day78
    路飞学城Python-Day77
    路飞学城Python-Day75
    【前端】CSS隐藏元素的方法和区别
    路飞学城Python-Day59(第五模块复习题)
    jquery 的ready() 与window.onload()的区别
  • 原文地址:https://www.cnblogs.com/dpf-learn/p/6175689.html
Copyright © 2011-2022 走看看