Socket(三) ---- 面向无连接的通信

Socket(三) ---- 面向无连接的通信


服务器端:
1、创建一个套接字,并调用bind()与本机地址绑定。
2、使用recvfrom接收数据。

客户端:
1、创建一个套接字。
2、使用sendto向目标地址发送数据。

收发数据:
sendto:向目标地址发送数据。
recvfrom:接收数据,和发送端地址。

结束通信:
closesocket:关闭套接字



服务器端:

     // 初始化使用socket函数要用到的dll
    WSADATA wd;
    ::WSAStartup(MAKEWORD(
2 , 2 ),  & wd);

    
// 本机地址信息
    sockaddr_in addr;
    addr.sin_family            
=  AF_INET;
    addr.sin_port            
=  htons( 5000 );
    addr.sin_addr.s_addr    
=  inet_addr( " 127.0.0.1 " );

    
// 创建套接字,并与本机地址绑定
    SOCKET s  =  ::socket(AF_INET, SOCK_DGRAM,  0 );
    ::bind(s, (
const  sockaddr * ) & addr,  sizeof (addr));

    
// 用来保存数据发送端的地址
    sockaddr_in client_addr;
    
int  fromlen  =   sizeof (sockaddr_in);
    
// 收数据
     while ( 1 )
    
{
        
char cBuffer[1024= {0};
        ::recvfrom(s, cBuffer, 
10240, (sockaddr*)&client_addr, &fromlen);
        cout
<<inet_ntoa(client_addr.sin_addr)<<endl<<cBuffer<<endl;
    }


    
// 关闭套接字
    ::closesocket(s);

    
// ws2.dll的收尾工作
    ::WSACleanup();


客户端:
     // 初始化使用socket函数要用到的dll
    WSADATA wd;
    WSAStartup(MAKEWORD(
2 , 2 ),  & wd);

    
// 服务器地址信息
    sockaddr_in addr;
    addr.sin_family            
=  AF_INET;
    addr.sin_port            
=  htons( 5000 );
    addr.sin_addr.s_addr    
=  inet_addr( " 127.0.0.1 " );

    
// 创建套接字
    SOCKET s  =  ::socket(AF_INET, SOCK_DGRAM,  0 );

    
// 向目标地址发送数据
     while ( 1 )
    
{
        
char cData[1024= {0};
        cin
>>cData;
        ::sendto(s, cData, (
int)strlen(cData)+10, (sockaddr*)&addr, sizeof(sockaddr_in));
    }


    
// 关闭套接字
    ::closesocket(s);

    
// ws2.dll的收尾工作
    ::WSACleanup();

你可能感兴趣的:(Socket(三) ---- 面向无连接的通信)