本文整理汇总了C++中ACE_SOCK_Acceptor类的典型用法代码示例。如果您正苦于以下问题:C++ ACE_SOCK_Acceptor类的具体用法?C++ ACE_SOCK_Acceptor怎么用?C++ ACE_SOCK_Acceptor使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了ACE_SOCK_Acceptor类的13个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ACE_TMAIN
int
ACE_TMAIN(int argc, ACE_TCHAR* argv[]){
ACE_SOCK_Acceptor acceptor;
ACE_INET_Addr addr(10009);
if(acceptor.open(addr,1)){
ACE_ERROR_RETURN((LM_ERROR,
"%p\n", "open"),1);
}
else if(acceptor.get_local_addr(addr) == -1){
ACE_ERROR_RETURN((LM_ERROR,
"%p\n", "get_local_addr"),1);
}
ACE_DEBUG((LM_INFO,
"(%P|%t) starting server at port %d\n",addr.get_port_number()));
ACE_Thread_Manager* mgr = ACE_Thread_Manager::instance();
while(true){
ACE_SOCK_Stream stream;
if(acceptor.accept(stream) == -1){
ACE_ERROR((LM_ERROR,
"%p\n","accept"));
continue;
}else{
ACE_DEBUG((LM_DEBUG,
"(%P|%t) spawning one thread\n"));
handle_input(mgr, commu, stream.get_handle());
}
}
return 0;
}
示例2: main
int main(int argc, char* argv[]){
if (argc > 1){
return 1;
}
cout << argv[0] << endl;
ACE_INET_Addr addr(1234, ACE_LOCALHOST);
ACE_SOCK_Stream stream;
ACE_SOCK_Acceptor acceptor;
int success = acceptor.open(addr, 1);
ACE_TCHAR addrStr[20];
if (success > 0) {
addr.addr_to_string(addrStr, 20);
}
//*
success = acceptor.accept(stream);
if (success < 0) {
cout << "Cannot accept" << endl;
return 1;
}
//*/
char buf[BUFSIZ];
int n;
char *msg = "You are connected";
stream.send_n(msg, strlen(msg));
stream.close();
/*
while (stream.recv(buf, BUFSIZ)) {
// _write(1, buf, n);
cout << buf << endl;
}
//*/
cout << endl << "Done" << endl;
return 0;
}
示例3: mtx_
CloudBus::CloudBus(int port, const char* addr)
: mtx_("CLOUDBUSMTX")
, mtx_node_list_("CLOUDBUSMTXNODELIST")
, node_list_condition_(mtx_node_list_)
, uuid_(boost::uuids::random_generator()())
, connected_(false)
{
node_info_.port = gadgetron_port_;
set_compute_capability(1);
node_info_.uuid = boost::uuids::to_string(uuid_);
ACE_SOCK_Acceptor listener (ACE_Addr::sap_any);
ACE_INET_Addr local_addr;
listener.get_local_addr (local_addr);
node_info_.address = std::string(local_addr.get_host_name());
}
示例4: sv_addr
int
Pipe::open (void)
{
ACE_INET_Addr my_addr;
ACE_SOCK_Acceptor acceptor;
ACE_SOCK_Connector connector;
ACE_SOCK_Stream reader;
ACE_SOCK_Stream writer;
int result = 0;
// Bind listener to any port and then find out what the port was.
if (acceptor.open (ACE_Addr::sap_any) == -1
|| acceptor.get_local_addr (my_addr) == -1)
result = -1;
else
{
int af = my_addr.get_type ();
const ACE_TCHAR *local = ACE_LOCALHOST;
#if defined (ACE_HAS_IPV6)
if (af == AF_INET6)
local = ACE_IPV6_LOCALHOST;
#endif /* ACE_HAS_IPV6 */
ACE_INET_Addr sv_addr (my_addr.get_port_number (),
local,
af);
// Establish a connection within the same process.
if (connector.connect (writer, sv_addr) == -1)
result = -1;
else if (acceptor.accept (reader) == -1)
{
writer.close ();
result = -1;
}
}
// Close down the acceptor endpoint since we don't need it anymore.
acceptor.close ();
if (result == -1)
return -1;
this->handles_[0] = reader.get_handle ();
this->handles_[1] = writer.get_handle ();
return 0;
}
示例5: open
int SocketTwoWayStream::open(ACE_SOCK_Acceptor& acceptor) {
int result = acceptor.accept(stream);
if (result>=0) {
happy = true;
}
updateAddresses();
return result;
}
示例6: main
int main()
{
ACE_INET_Addr server_addr;
ACE_SOCK_Acceptor acceptor;
ACE_SOCK_Stream peer;
if (-1 == server_addr.set(22334))
{
log("server_addr.set faild\n");
return 1;
}
if (-1 == acceptor.open(server_addr))
{
log("acceptor.open failed\n");
return 1;
}
while(1)
{
if (-1 == acceptor.accept(peer))
{
log("acceptor.accept failed\n");
return 1;
}
peer.disable(ACE_NONBLOCK);
auto_ptr<char> pathname(get_url_pathname(&peer));
ACE_Mem_Map mapped_file(pathname.get());
if (-1 == (peer.send_n(mapped_file.addr(), mapped_file.size())))
{
log("peer.send_n failed\n");
return 1;
}
peer.close();
}
return acceptor.close() == -1 ? 1 : 0;
}
示例7: testConnectionErrorHandling
bool testConnectionErrorHandling()
{
// Open an acceptor to force an existing port number to be used.
// Use 0 to indicate an available port should be selected.
u_short portNum = 0;
ACE_INET_Addr addr(portNum, ACE_LOCALHOST);
ACE_SOCK_Acceptor acceptor;
if (-1 == acceptor.open(addr)) {
ACE_ERROR_RETURN ((LM_ERROR, ACE_TEXT("%N:%l: Failed to open acceptor to ")
ACE_TEXT("obtain a used port number")), false);
}
acceptor.get_local_addr(addr);
portNum = addr.get_port_number();
OpenDDS::DCPS::TransportInst_rch inst =
TheTransportRegistry->create_inst("tcp1", "tcp");
OpenDDS::DCPS::TcpInst_rch tcp_inst =
OpenDDS::DCPS::dynamic_rchandle_cast<OpenDDS::DCPS::TcpInst>(inst);
acceptor.get_local_addr(tcp_inst->local_address_);
OpenDDS::DCPS::TransportConfig_rch cfg =
TheTransportRegistry->create_config("cfg");
cfg->instances_.push_back(inst);
TheTransportRegistry->global_config(cfg);
SimpleTransportClient transportClient;
transportClient.exceptionThrown = false;
transportClient.enable();
if (transportClient.exceptionThrown) {
ACE_DEBUG ((LM_INFO, ACE_TEXT("%N:%l: Expected exception thrown. ")
ACE_TEXT("Any previous error messages about transport ")
ACE_TEXT("configuration can be ignored.\n")));
return true;
} else {
ACE_ERROR ((LM_ERROR, ACE_TEXT("(%N:%l: ERROR: Exception was expected to ")
ACE_TEXT("be thrown but was not.\n")));
return false;
}
}
示例8: addr
int
Peer_Handler::open (void *)
{
if (host_ != 0) // Connector
{
ACE_INET_Addr addr (port_, host_);
ACE_SOCK_Connector connector;
// Establish connection with server.
if (connector.connect (stream_, addr) == -1)
ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "connect"), -1);
ACE_DEBUG ((LM_DEBUG, "(%t) connected.\n"));
}
else // Acceptor
{
ACE_SOCK_Acceptor acceptor;
ACE_INET_Addr local_addr (port_);
if ((acceptor.open (local_addr) == -1) ||
(acceptor.accept (this->stream_) == -1))
ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "accept failed"), -1);
ACE_DEBUG ((LM_DEBUG, "(%t) accepted.\n"));
}
int result = this->rd_stream_.open (*this);
if (result != 0)
return result;
result = this->wr_stream_.open (*this);
if (result != 0)
return result;
result = this->rd_stream_.read (this->mb_,
this->mb_.size ());
return result;
}
示例9: defined
int
Handler_Factory::create_handler (ACE_SOCK_Acceptor &acceptor,
Handler * (*handler_factory) (ACE_HANDLE),
const char *handler_type)
{
ACE_SOCK_Stream new_stream;
if (acceptor.accept (new_stream) == -1)
ACE_ERROR_RETURN ((LM_ERROR,
"%p\n",
"accept"),
-1);
Handler *handler;
ACE_ALLOCATOR_RETURN (handler,
(*handler_factory) (new_stream.get_handle ()),
-1);
ACE_DEBUG ((LM_DEBUG,
"(%P|%t) spawning %s handler\n",
handler_type));
if (handler->open () == -1)
return -1;
#if defined (ACE_MT_SAFE)
// Spawn a new thread and run the new connection in that thread of
// control using the <server> function as the entry point.
return handler->activate ();
#else
handler->svc ();
handler->close (0);
return 0;
#endif /* ACE_HAS_THREADS */
}
示例10: ACE_TRACE
int
ACE_Pipe::open (int buffer_size)
{
ACE_TRACE ("ACE_Pipe::open");
#if defined (ACE_LACKS_SOCKETPAIR)
ACE_INET_Addr my_addr;
ACE_SOCK_Acceptor acceptor;
ACE_SOCK_Connector connector;
ACE_SOCK_Stream reader;
ACE_SOCK_Stream writer;
int result = 0;
# if defined (ACE_WIN32)
ACE_INET_Addr local_any (static_cast<u_short> (0), ACE_LOCALHOST);
# else
ACE_Addr local_any = ACE_Addr::sap_any;
# endif /* ACE_WIN32 */
// Bind listener to any port and then find out what the port was.
if (acceptor.open (local_any) == -1
|| acceptor.get_local_addr (my_addr) == -1)
result = -1;
else
{
ACE_INET_Addr sv_addr (my_addr.get_port_number (),
ACE_LOCALHOST);
// Establish a connection within the same process.
if (connector.connect (writer, sv_addr) == -1)
result = -1;
else if (acceptor.accept (reader) == -1)
{
writer.close ();
result = -1;
}
}
// Close down the acceptor endpoint since we don't need it anymore.
acceptor.close ();
if (result == -1)
return -1;
this->handles_[0] = reader.get_handle ();
this->handles_[1] = writer.get_handle ();
# if !defined (ACE_LACKS_TCP_NODELAY)
int one = 1;
// Make sure that the TCP stack doesn't try to buffer small writes.
// Since this communication is purely local to the host it doesn't
// affect network performance.
if (writer.set_option (ACE_IPPROTO_TCP,
TCP_NODELAY,
&one,
sizeof one) == -1)
{
this->close ();
return -1;
}
# endif /* ! ACE_LACKS_TCP_NODELAY */
# if defined (ACE_LACKS_SO_RCVBUF) && defined (ACE_LACKS_SO_SNDBUF)
ACE_UNUSED_ARG (buffer_size);
# endif
# if !defined (ACE_LACKS_SO_RCVBUF)
if (reader.set_option (SOL_SOCKET,
SO_RCVBUF,
reinterpret_cast <void *> (&buffer_size),
sizeof (buffer_size)) == -1
&& errno != ENOTSUP)
{
this->close ();
return -1;
}
# endif /* !ACE_LACKS_SO_RCVBUF */
# if !defined (ACE_LACKS_SO_SNDBUF)
if (writer.set_option (SOL_SOCKET,
SO_SNDBUF,
reinterpret_cast <void *> (&buffer_size),
sizeof (buffer_size)) == -1
&& errno != ENOTSUP)
{
this->close ();
return -1;
}
# endif /* !ACE_LACKS_SO_SNDBUF */
#elif defined (ACE_HAS_STREAM_PIPES) || defined (__QNX__)
ACE_UNUSED_ARG (buffer_size);
if (ACE_OS::pipe (this->handles_) == -1)
ACE_ERROR_RETURN ((LM_ERROR,
ACE_TEXT ("%p\n"),
ACE_TEXT ("pipe")),
-1);
#if !defined(__QNX__)
int arg = RMSGN;
// Enable "msg no discard" mode, which ensures that record
//.........这里部分代码省略.........
示例11: buffer
void
TestDriver::run_i()
{
ACE_Message_Block buffer (1000000);
ACE_SOCK_Acceptor acceptor;
if (acceptor.open(sub_addr_) == -1) {
ACE_ERROR((LM_ERROR,
"%p\n",
"open"));
throw TestException();
}
ACE_SOCK_Stream peer;
if (acceptor.accept(peer) == -1) {
ACE_ERROR((LM_ERROR,
"%p\n",
"accept"));
throw TestException();
}
#if defined (ACE_DEFAULT_MAX_SOCKET_BUFSIZ)
# if !defined (ACE_LACKS_SOCKET_BUFSIZ)
// set connection options
int snd_size = ACE_DEFAULT_MAX_SOCKET_BUFSIZ;
int rcv_size = ACE_DEFAULT_MAX_SOCKET_BUFSIZ;
int nodelay =1;
if (peer.set_option (IPPROTO_TCP, TCP_NODELAY, &nodelay, sizeof (nodelay)) == -1) {
ACE_ERROR((LM_ERROR, "(%P|%t) Subscriber failed to set TCP_NODELAY\n"));
}
if (peer.set_option (SOL_SOCKET, SO_SNDBUF, (void *) &snd_size, sizeof (snd_size)) == -1
&& errno != ENOTSUP)
{
ACE_ERROR((LM_ERROR,
"(%P|%t) TcpSubscriber failed to set the send buffer size to %d errno %m\n",
snd_size));
}
if (peer.set_option (SOL_SOCKET, SO_RCVBUF, (void *) &rcv_size, sizeof (int)) == -1
&& errno != ENOTSUP)
{
ACE_ERROR((LM_ERROR,
"(%P|%t) TcpSubscriber failed to set the receive buffer size to %d errno %m \n",
rcv_size));
}
# endif /* !ACE_LACKS_SOCKET_BUFSIZ */
#endif /* !ACE_DEFAULT_MAX_SOCKET_BUFSIZ */
ACE_DEBUG((LM_DEBUG, "(%T) Subscriber running.\n"));
unsigned total_packets = num_packets_ + 500;
int result;
for (unsigned pkt_cnt = 0; pkt_cnt < total_packets; ++pkt_cnt)
{
if ((result = peer.recv(buffer.wr_ptr(), num_bytes_per_packet_)) == 0) {
// The publisher has disconnected - check if this was unexpected.
ACE_ERROR((LM_ERROR,
"(%P|%t) Publisher disconnected at packet %d.\n",
pkt_cnt));
throw TestException();
}
else if (result < 0) {
// Something bad happened
ACE_ERROR((LM_ERROR, "(%P|%t) bad read\n"));
throw TestException();
}
else if ((unsigned) result != num_bytes_per_packet_) {
// Something bad happened
ACE_ERROR((LM_ERROR,
"(%P|%t) read %d bytes but expected %d\n",
result, num_bytes_per_packet_));
throw TestException();
}
// only send 4 back
result = 4;
peer.send_n(buffer.wr_ptr(), result);
}
// Close the acceptor so that no more clients will be taken in.
acceptor.close();
if (verbose_) {
ACE_DEBUG((LM_DEBUG, "(%P|%t) Subscriber has completed.\n"));
}
}
示例12: accept_connections
int accept_connections(){
if (peer_acceptor_.get_local_addr(server_addr_) == -1){
ACE_ERROR_RETURN((LM_ERROR, "%p\n", "Error in get_local_addr"), 1);
}
ACE_DEBUG((LM_DEBUG, "Starting server at port %d\n", server_addr_.get_port_number()));
while (1){
ACE_Time_Value timeout(ACE_DEFAULT_TIMEOUT);
if (peer_acceptor_.accept(new_stream_, &client_addr_, &timeout)){
ACE_ERROR((LM_ERROR, "%p\n", "accept"));
continue;
}
else{
ACE_DEBUG((LM_DEBUG, "Connection established with remote %s:%d\n",
client_addr_.get_host_name(), client_addr_.get_port_number()));
handle_connection();
}
}
}
示例13: printf
int
ACE_TMAIN(int argc, ACE_TCHAR *argv[])
{
ACE_SOCK_Stream connection_stream;
int c;
printf("HZ = %d\n", HZ);
if (argc < 2)
goto usage;
while ((c = getopt (argc, argv, "drstU:uvBDTb:f:l:n:p:A:O:L:xh:")) != -1)
{
switch (c)
{
case 'h':
host = optarg;
break;
case 'x':
new_line = 1;
break;
case 'L':
title = optarg;
break;
case 'B':
b_flag = 1;
break;
case 't':
trans = 1;
break;
case 'r':
trans = 0;
break;
case 'd':
options |= SO_DEBUG;
break;
case 'D':
#ifdef TCP_NODELAY
nodelay = 1;
#else
fprintf (stderr,
"ttcp: -D option ignored: TCP_NODELAY socket option not supported\n");
#endif
break;
case 'n':
nbuf = atoi (optarg);
break;
case 'l':
data_buf_len = atoi (optarg);
break;
case 's':
sinkmode = !sinkmode;
break;
case 'p':
port = atoi (optarg);
break;
case 'U':
domain = PF_UNIX;
domainname = optarg;
break;
case 'u':
udp = 1;
break;
case 'v':
verbose = 1;
break;
case 'A':
bufalign = atoi (optarg);
break;
case 'O':
bufoffset = atoi (optarg);
break;
case 'b':
#if defined(SO_SNDBUF) || defined(SO_RCVBUF)
sockbufsize = atoi (optarg);
#else
fprintf (stderr,
"ttcp: -b option ignored: SO_SNDBUF/SO_RCVBUF socket options not supported\n");
#endif
break;
case 'f':
fmt = *optarg;
break;
case 'T':
touchdata = 1;
break;
default:
goto usage;
}
}
/* if transmitter, create remote address to transmit to. */
if (trans)
{
if (address.set (port, host) == -1)
perror ("address.set"), exit (1);
}
/* else, receiver create address to listen on */
//.........这里部分代码省略.........