zoukankan      html  css  js  c++  java
  • WinSock UDP通讯实例

    下载
    #include <WinSock2.h> 
    #include 
    <stdio.h>
    #define PORT 
    8888
    int main() //server
    {
        WSADATA wsaData;
        
    int Ret = WSAStartup(MAKEWORD(2,2),&wsaData);
        printf(
    "Server!\n");
        
    if(Ret != 0)
        
    {
            printf(
    "无法初始化winsock.\n");
            WSACleanup();
        }

        
    else{
            
        
    //    printf("初始化winsock成功\n");
        }

        
        
    if ( LOBYTE( wsaData.wVersion ) != 2 ||
            HIBYTE( wsaData.wVersion ) 
    != 2 )
        
    {
            WSACleanup( );
            
    return 1
        }


        SOCKET socket
    =::socket(AF_INET,SOCK_DGRAM,IPPROTO_IP);
        sockaddr_in addr;
        addr.sin_addr.S_un.S_addr
    =INADDR_ANY;
        addr.sin_family
    =AF_INET;
        addr.sin_port
    =ntohs(PORT);
        
        
        
        
    if(socket==INVALID_SOCKET)
        
    {
            printf(
    "socket Error!");
        }

        
    int rs=    bind(socket,(sockaddr*)&addr,sizeof(addr));
        
        
    if (rs!=0)
        
    {
            printf(
    "bind failed!");
            
    return 1;
        }

        
    char buf[200]="\0";
        
    char temp[200]="\0";
        sockaddr_in addrcl;
        
    int len=sizeof(sockaddr);
        
        
    while(1){
            
            recvfrom(socket,buf,sizeof(buf),
    0,(sockaddr*)&addrcl,&len);//用新建的地址结构保存客户端的信息 
            
            sprintf(temp,
    "%s:%s",inet_ntoa(addrcl.sin_addr),buf);
            sendto(socket,temp,strlen(temp)
    +1,0,(sockaddr*)&addrcl,sizeof(addr));
            
    if(strcmp(buf,"srvexit")==0)
            
    {
                
    break;
            }

            printf(
    "%s",buf);
        }

        closesocket(socket);
        
        WSACleanup();
        printf(
    "exit\n");
        
    return 0;
    }



    #include <WinSock2.h>
    #include 
    <stdio.h>
    #define PORT 
    8888
    int main()
    {
        WSADATA wsaData;
        
    int Ret = WSAStartup(MAKEWORD(2,2),&wsaData);
        printf(
    "Client..!\n");
        
    if(Ret != 0)
        
    {
            printf(
    "无法初始化winsock.\n");
            WSACleanup();
        }

        
    else{
            
        
    //    printf("初始化winsock成功\n");
        }

        
        SOCKET socketc
    =::socket(AF_INET,SOCK_DGRAM,IPPROTO_IP);
        sockaddr_in addr;
        addr.sin_addr.S_un.S_addr
    =inet_addr("127.0.0.1");
        addr.sin_family
    =AF_INET;
        addr.sin_port
    =ntohs(PORT);
        
        
    if(socketc==INVALID_SOCKET)
        
    {
            printf(
    "socket Error!");
        }


        
    int len=sizeof(sockaddr);
        

        
    while (1)//client
        {
            
    char buf[200]="\0";
            
    char rbuf[300]="\0";
            printf(
    "\n:");
            scanf(
    "%s",&buf);
            sendto(socketc,buf,strlen(buf)
    +1,0,(SOCKADDR*)&addr,len);//用回原来的地址结构
        
            recvfrom(socketc,rbuf,sizeof(rbuf),
    0,(SOCKADDR*)&addr,&len);
            
    if(strcmp(rbuf,"exit")==0)
            
    {
                
    break;
            }

            printf(
    "%s",rbuf);
            
        }

        
        closesocket(socketc);
        WSACleanup();
        printf(
    "end\n");
        
    return 0;
    }


  • 相关阅读:
    学习java随笔第五篇:流程控制
    学习java随笔第四篇:运算符
    学习java随笔第三篇:java的基本数据类型
    知识精简
    性能优化(详细)
    2,8,10,16进制转换
    前端优化35例
    性能优化
    字面量自定义事件

  • 原文地址:https://www.cnblogs.com/ahuo/p/890826.html
Copyright © 2011-2022 走看看