|
客户端代码:- #include "ace/INET_Addr.h"
- #include "ace/SOCK_Stream.h"
- #include "ace/Log_Msg.h"
- #include "ace/SOCK_Connector.h"
- #include "ace/OS.h"
- int ACE_TMAIN(int, ACE_TCHAR* [])
- {
- ACE_INET_Addr srvr(50000, ACE_LOCALHOST);
- ACE_SOCK_CONNECTOR connector;
- ACE_SOCK_Stream peer;
- if (connector.connect(peer, srvr) == -1) // 发送数据前建立连接,发送成功后发送第二条数据失败!
- return -1;
- int bc = 0, i = 0;
- char buf[64] = {0};
- ssize_t bytes_sended = 0;
- while (1)
- {
- // if (connector.connect(peer, srvr) == -1) // 每次发送数据前建立连接 OK
- // return -1;
- char data[16] = {0};
- ACE_OS::sprintf(data, "uptime-%d", i);
- bytes_sended = peer.send_n(data, ACE_OS::strlen(data));
- if (bytes_sended < 0)
- {
- int error = ACE_OS::last_error();
- continue;
- }
- bc = peer.recv(buf, sizeof(buf));
- ACE_DEBUG((LM_INFO, "receive from server data is [%s]\n", buf));
- ACE_OS::sleep(10);
- i++;
- //peer.close();
- bytes_sended = 0;
- bc = 0;
- }
- peer.close();
- return 0;
- }
- 服务端代码:
- #include "ace/INET_Addr.h"
- #include "ace/SOCK_Stream.h"
- #include "ace/SOCK_Acceptor.h"
- #include "ace/Log_Msg.h"
- #include "ace/Time_Value.h"
- int ACE_TMAIN(int, ACE_TCHAR* [])
- {
- ACE_INET_Addr port_to_listen(50000);
- ACE_SOCK_Acceptor acceptor;
- if (acceptor.open(port_to_listen, 1) == -1)
- return -1;
- while (1)
- {
- ACE_SOCK_Stream peer;
- ACE_INET_Addr peer_addr;
- ACE_Time_Value timeout(10, 0);
- if (acceptor.accept(peer, &peer_addr) == -1)
- {
- break;
- }
- else
- {
- ACE_TCHAR peer_name[256] = {0};
- peer_addr.addr_to_string(peer_name, 256);
- ACE_DEBUG((LM_DEBUG, ACE_TEXT("(%P|%t) Connection from %s\n"), peer_name));
- ssize_t bytes_received = 0;
- char buffer[4096] = {0};
- bytes_received = peer.recv(buffer, sizeof(buffer));
- if (bytes_received > 0)
- {
- ACE_DEBUG((LM_INFO, "receive data is : [%s]\n", buffer));
- peer.send_n(buffer, bytes_received);
- }
- peer.close();
- }
- }
- return 0;
- }
复制代码 我先问问大侠们,客户端对于ACE的 ACE_SOCK_CONNECTOR 每次在send_n时候都需要先建立连接后,才能往客户段发送数据,难道没有建立常连接后,发送数据,也就是说建立一次连接,然后不停发送数据?不知是不是我的使用方式有误,请坛友们指点!谢谢(注意红色部分,当每次发送数据都建立连接,则程序正常) |
|