急需一程序接收网络发过来的消息,要支持UDP 我在做毕设,急需一程序接收网络发过来的消息,要支持UDP即可,如果可以最好能加上身份口令验证的,我是希望用QQ来接收手机短消息,然后利用此程序把消息接下来而不通过QQ来手动点击,知道服务器端口号.联系方式:[email protected]谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用Dephi上的UDP控件,你會很快做出來的,如果不會DELPHI,你用C++BUILDER也行,這種程序何必一定要用VC來做呢 //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;} 我用CB做了一個DEMO,已寄給你了,你收一下,用CB中的UDP控件,每一秒發送當前的時間,接收方也是每一秒接收,你可以改一下,把發送停了,然後輸入主機IP,以及PORT.接收主機發送的消息 VC++6.0MSCOMM发送十六进制数据问题 VC中使用CHtmlView和IE的冲突问题 VC/MFC如何添加启动界面 如何判断本地路径有效? 关于消息的问题,请大家进来帮帮忙!!! 好开心哦,创天VC变成了纯正E文版本啦,VB呢还是原来的中文版本,,,但是VC怎么号称是可视化的呢??? 如何实现动态画线 简单的问题,但一定给分,请多多帮忙啊? 多线程请教——关于一个参数怎么设置的问题 [在线] 链接错误: 高手请进 困扰已久的问题:怎样派生那些是MFC类但没有在MFC CLASS /BASE CLASS列出的类?? 请教怎么把SQL SERVER的库倒到ACCESS里面,急,在线等候
// 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;
}