zoukankan      html  css  js  c++  java
  • Socket编程基础——无连接UDP

    与面向连接的网络连接相比,无连接的网络通信不需要在服务器与客户端之间建立连接。面向非连接的Socket通信是基于UDP的,服务器端不需要调用listen()accept()函数来等待客户端的连接;客户端直接向服务器发送数据。

    1、服务器端
    (1)建立Socket,绑定本地IP和端口

    server=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);
    sAddr.sin_family=AF_INET;
    sAddr.sin_port=htons(9000);
    sAddr.sin_addr.s_addr=htonl(ADDR_ANY);
    retVal=bind(server,(sockaddr*)&sAddr,sizeof(sAddr));
    

    (2)等待客户连接、接收数据

    sockaddr_in recvAddr;
    int len=sizeof(recvAddr);
    // 连接的客户端地址信息
    
    recvfrom(server,buf,BUF_SIZE,0,(sockaddr*)&recvAddr,&len);
    cout<<"Recv date from "<<inet_ntoa(recvAddr.sin_addr)<<" :"<<buf<<endl;
    // 接收数据、recvAddr返回客户段信息
    

    (3)发送数据

    sendto(server,buf,strlen(buf),0,(sockaddr*)&recvAddr,len);
    

    2、客户端
    (1)建立Socket

    client=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);
    

    (2)远程服务器地址信息

    sockaddr_in sAddr;
    sAddr.sin_family=AF_INET;
    sAddr.sin_port=htons(9000);
    sAddr.sin_addr.s_addr=inet_addr("127.0.0.1");
    int len=sizeof(sAddr);
    

    (3)发送数据

    sendto(client,buf,strlen(buf),0,(sockaddr*)&sAddr,len);
    

    (4)接收数据

    recvfrom(client,buf,BUF_SIZE,0,(sockaddr*)&sAddr,&len);
  • 相关阅读:
    int 和 Integer 有什么区别
    Exception、Error、运行时异常与一般异常有何异同
    Redis存储系统
    MySpring-06.基于XML的IOC的案例
    Spring MVC技术之【上机】
    MySpring-05.基于XML的IOC的案例1
    MySpring-04.Spring的常用注解
    MySpring-03.Spring的 IOC 和 DI
    MySpring-02.程序间耦合
    Spring框架之【上机】
  • 原文地址:https://www.cnblogs.com/limicheng/p/4009176.html
Copyright © 2011-2022 走看看