我在做毕设,急需一程序接收网络发过来的消息,要支持UDP即可,如果可以最好能加上身份口令验证的,我是希望用QQ来接收手机短消息,然后利用此程序把消息接下来而不通过QQ来手动点击,知道服务器端口号.联系方式:[email protected]
谢谢!

解决方案 »

  1.   

    用Dephi上的UDP控件,你會很快做出來的,如果不會DELPHI,你用C++BUILDER也行,這種程序何必一定要用VC來做呢
      

  2.   

    //http://www.district86.k12.il.us/central/activities/computerclub/Tutorials/Winsock/Lesson5.htm
    // file name: wsudprcv.c
    //
    // description:     A UDP packet receiver that waits for
    //                  UDP packets on a specific port#include <winsock.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #pragma comment(lib,"ws2_32")
    int main(int argc, int **argv)
    {
       WSADATA wsda; // Structure to store info
    // returned from WSAStartup   char szMessage[512];
       int iMessageLen;
       int ret;   char szAddress[64];
       int iPort;   SOCKET s; // Our TCP socket handle
       SOCKADDR_IN addr, // The local interface address
                   remote_addr; // The sender's address
       int iRemoteAddrLen; // Contains the length of remte_addr, passed to recvfrom
    /*
       // Check arguments
       if(argc != 2 ||
          (argc==2 && strcmp((char *) &argv[1][0], "/?")==0))
       {
          printf("wsudprcv port\n");
          printf("   port:   the port the server should listen to\n");
          exit(1);
       }   // Get the remote port
       iPort = atoi((char *) &argv[1][0]);   if(iPort<0 || iPort>65563)
       {
          printf("Invalid port number! (%s)\n", argv[2]);
          exit(1);
       }
    */
    iPort = 2020;
       iMessageLen = 512; // Set to the length of szMessage buffer   // Load version 1.1 of Winsock   WSAStartup(MAKEWORD(1,1), &wsda);   // Create an UDP socket
       printf("Creating socket...");
       s = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);   // Error?
       if(s == SOCKET_ERROR)
       {
          printf("Error\nCall to socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); failed with:\n%d\n", WSAGetLastError());
          exit(1);
       }   printf("OK\n");   // Fill in the interface information
       printf("Binding socket...");
       addr.sin_family = AF_INET;
       addr.sin_port = htons(iPort);
       addr.sin_addr.s_addr = INADDR_ANY;   if(bind(s, (struct sockaddr *) &addr, sizeof(addr)) == SOCKET_ERROR)
       {
          printf("Error\nCall to bind(s, (struct sockaddr *) &addr, sizeof(addr)); failed with:\n%d\n", WSAGetLastError());
          exit(1);
       }
       printf("OK\n");   // Ready to receive data   printf("Waiting for packets (Press Ctrl-C to exit)...");   iRemoteAddrLen = sizeof(remote_addr);
       ret = recvfrom(s, szMessage, iMessageLen, 0, (struct sockaddr *) &remote_addr, &iRemoteAddrLen);   if(ret == SOCKET_ERROR)
       {
          printf("Error\nCall to recvfrom(s, szMessage, iMessageLen, 0, (struct sockaddr *) &remote_addr, &iRemoteAddrLen); failed with:\n%d\n", WSAGetLastError());
          exit(1);
       }
       printf("Packet received\n");   iMessageLen = ret; // Length of the data received   szMessage[iMessageLen] = '\0'; // Convert to cstring   printf("\"%s\" received from %s\n", szMessage, inet_ntoa(remote_addr.sin_addr));   closesocket(s);   WSACleanup();
    getch();
       return 0;
    }
      

  3.   

    我用CB做了一個DEMO,已寄給你了,你收一下,用CB中的UDP控件,每一秒發送當前的時間,接收方也是每一秒接收,你可以改一下,把發送停了,然後輸入主機IP,以及PORT.接收主機發送的消息