⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 client.cpp

📁 ACE的通信程序
💻 CPP
字号:
#include "ace/OS.h"
#include "ace/SOCK_Stream.h"
#include "ace/SOCK_Connector.h"
#include "ace/SOCK_Dgram.h"

#include "ace/Message_Block.h"
#include "ace/Thread_Manager.h"
#include "ace/INET_Addr.h"
#include "Constants.h"
#include "Client.h"

namespace ACE_Client
{
     Client::Client(char *server)
     {
         addr = ACE_INET_Addr(SERVER_PORT_NUM, server);
     }

     int Client::svc(void)
	 {
		 //TCP
		 //ACE_SOCK_Stream stream;
		 //ACE_SOCK_Connector connector;
		 //if(connector.connect(stream, addr) < 0)
		 //{
			// return -1;
		 //}
		 //else
		 //{
			// while(1)
			// {
			//	 ACE_Message_Block *mb = NULL;
			//	 if(this->getq(mb) == -1)
			//	 {
			//		 break;
			//	 }

			//	 ACE_DEBUG((LM_DEBUG, ACE_TEXT("(%t) Sending %s\n"), &(mb->rd_ptr()[4])));
			//	 stream.send_n(mb->rd_ptr(), mb->length());
			//	 mb->release();
			//	 ACE_OS::sleep(TIME_INTERVAL);
			// }
		 //}
		 //stream.close();

		 //UDP
		 ACE_SOCK_Dgram	dgram(ACE_INET_Addr((u_short)0));
		 while(1)
		 {
			 ACE_Message_Block *mb = NULL;
			 if(this->getq(mb) == -1)
			 {
				 break;
			 }

			 ACE_DEBUG((LM_DEBUG, ACE_TEXT("(%t) Sending %s\n"), &(mb->rd_ptr()[4])));
			 dgram.send(mb->rd_ptr(), mb->length(), addr);
			 mb->release();
			 ACE_OS::sleep(TIME_INTERVAL);
		 }

		 return 0;
     }

     char *Client::put_task(char *msg_t, char *msg_s, size_t msg_len)
     {
         for(int i = 0; i < 4; i++)
         {
              msg_t[i] = (char)((msg_len >> (8 * i)) & 0xff);
         }
         ACE_OS::memcpy(&msg_t[4], msg_s, msg_len);

         ACE_Message_Block *mb = NULL;
         ACE_NEW_RETURN(mb, ACE_Message_Block(msg_len + 4, ACE_Message_Block::MB_DATA, 0, msg_t), 0);
         mb->wr_ptr(msg_len + 4);
         this->putq(mb);
         return msg_t;
     }

     void Client::send_tasks(void)
     {
         this->activate();
         ACE_Thread_Manager::instance()->wait();
     }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -