zoukankan      html  css  js  c++  java
  • 【转】UDP windows下socket编程实例

    Server 端程序源代码:
    #include <stdio.h>
    #include <Winsock2.h>
    void main()
    {
    SOCKET socket1;
    //InitWinsock();
    WSADATA wsaData;
         int iErrorCode;
         if (WSAStartup(MAKEWORD(2,1),&wsaData)) //调用Windows Sockets DLL
         {
              printf("Winsock无法初始化!\n");
              WSACleanup();
              return;
         }
         printf("服务器开始创建SOCKET。\n");
    struct sockaddr_in local;
    struct sockaddr_in from;
    int fromlen =sizeof(from);
    local.sin_family=AF_INET;
    local.sin_port=htons(27015); ///监听端口
    local.sin_addr.s_addr=INADDR_ANY; ///本机
    socket1=socket(AF_INET,SOCK_DGRAM,0);
    bind(socket1,(struct sockaddr*)&local,sizeof(local));
    while (1)
    {
    char buffer[1024]="\0";
    printf("waiting for message from others-------------\n");
    if (recvfrom(socket1,buffer,sizeof(buffer),0,(struct sockaddr*)&from,&fromlen)!=SOCKET_ERROR)
    {
    printf("Received datagram from %s--%s\n",inet_ntoa(from.sin_addr),buffer);
    ////给cilent发信息
    sendto(socket1,buffer,sizeof(buffer),0,(struct sockaddr*)&from,fromlen);
    }
    //Sleep(1000);
    }
    closesocket(socket1);
    WSACleanup();   
    }
    Client端源代码:
    #include <stdio.h>
    #include <Winsock2.h>
    void main()
    {
    SOCKET socket1;
    //InitWinsock();
    WSADATA wsaData;
         int iErrorCode;
         if (WSAStartup(MAKEWORD(2,1),&wsaData)) //调用Windows Sockets DLL
         {
              printf("Winsock无法初始化!\n");
              WSACleanup();
              return;
         }
    printf("服务器开始创建SOCKET。\n");
    struct sockaddr_in server;
    int len =sizeof(server);
    server.sin_family=AF_INET;
    server.sin_port=htons(27015); ///server的监听端口
    server.sin_addr.s_addr=inet_addr("221.223.16.32"); ///server的地址
    socket1=socket(AF_INET,SOCK_DGRAM,0);
    while (1)
    {
         char buffer[1024]="\0";
         printf("input message\n");
         scanf("%s",buffer);
    //     printf("%s",buffer);
         if (strcmp(buffer,"bye")==0)
         {
             printf("退出!\n");
             Sleep(100);
             closesocket(socket1);
             break;
         }
         if (sendto(socket1,buffer,sizeof(buffer),0,(struct sockaddr*)&server,len)!=SOCKET_ERROR)
         {
             //printf("sending..\n");
             Sleep(100);
             if (recvfrom(socket1,buffer,sizeof(buffer),0,(struct sockaddr*)&server,&len) != SOCKET_ERROR)
             printf("rece from server:%s\n",buffer);
         }
         }
         closesocket(socket1);
         WSACleanup();   

    }

  • 相关阅读:
    Struts2 源码分析——调结者(Dispatcher)之准备工作
    H3C交换机配置镜像端口
    华为交换机S5700系列配置镜像端口(M:N)
    华为交换机S5700系列配置镜像端口(1:1)
    华为交换机基本操作
    华为S系列交换机全面阻击“WannaCry”
    华为S5700系列交换机配置通过Telnet登录设备
    华为S1720, S2700, S5700, S6720 V200R010C00 产品文档
    华为S5700系列交换机使用高级ACL限制不同网段的用户互访
    华为S5700系列交换机配置通过流策略实现VLAN间三层隔离
  • 原文地址:https://www.cnblogs.com/lidan/p/2482878.html
Copyright © 2011-2022 走看看