采用UDP方式实现数据接收功能,与TCP接收服务器功能一致。但没有accep和listen操作。 #include "stdafx.h" #include "ace/ace.h" #include "ace/SOCK_Dgram.h" #include "ace/INET_Addr.h" #include "ace/Log_Msg.h" #include "ace/OS.h" #define BUF_SIZE 11 /* *UDP数据接收端 *此程序负责接收来自UDP数据发送端的数据,并将其显示在输出设备上。 *采用一个ACE_SOCK_Dgram和两个ACE_INET_Addr对象 *调用recv函数后程序进入等待状态,直到有客户端发送的UDP数据到达。 */ class UDPServer { public: UDPServer(int nPort):iaLocal(nPort),sdDgram(iaLocal) {} ~UDPServer(){} //接收来自UDP客户端发送的数据 int Recv() { int nCount = -1; memset(szData,0,BUF_SIZE); while((nCount = sdDgram.recv(szData,BUF_SIZE,iaRemote)) != -1 || nCount != 0) { szData[nCount] = 0; ACE_DEBUG((LM_DEBUG,ACE_TEXT("%s/n"),szData)); ACE_OS::sleep(1); memset(szData,0,BUF_SIZE); } return 0; } private: char szData[BUF_SIZE]; ACE_INET_Addr iaLocal; ACE_INET_Addr iaRemote; ACE_SOCK_Dgram sdDgram; }; int ACE_TMAIN(int argc, ACE_TCHAR* argv[]) { UDPServer udpServer(27002); udpServer.Recv(); return 0; }