int main(int argc, char *argv[]){ if (argc <= 1){ cout << "Plesae input command!" << endl; return NO_COMMAND_ERROR; } for (int i = 1; i < argc; i++){ cout << argv[i] << endl; } ACE_INET_Addr address(1234, ACE_LOCALHOST); ACE_SOCK_CONNECTOR connector; ACE_SOCK_STREAM stream; if (connector.connect(stream, address) >= 0){ for (int i = 1; i < argc; i++){ string temp = string(argv[i]) + " "; if (stream.send_n(temp.c_str(),temp.length()) < 0){ cout << "Stream message sending failed!" << endl; return STREAM_MESSAGE_SENDING_ERROR; } } stream.close(); } else{ cout << "Connector failed on connecting!" << endl; return CONNECTION_FAIL; } return SUCCESS; }
int main(int argc, char *argv[]){ if (argc > 1){ cout << "Please do not use command!" << endl; return TOO_MANY_COMMANDS_ERROR; } cout << argv[0] << endl; ACE_INET_Addr address(1234, ACE_LOCALHOST); ACE_SOCK_ACCEPTOR acceptor; ACE_SOCK_STREAM stream; if (acceptor.open(address, 1) >= 0){ ACE_TCHAR temp[30]; size_t n = 30; address.addr_to_string(temp,n); cout << temp << endl; } else{ cout << "Sock acceptor open fail" << endl; return SOCK_ACCEPTOR_OPEN_FAIL; } for (;;){ if (acceptor.accept(stream) < 0){ cout << "Socket Connection failed!" << endl; return SOCKET_CONNECTION_FAIL; } char buf[BUFSIZ]; int n; while ((n = stream.recv(buf, BUFSIZ)) > 0){ _write(1, buf, n); } cout << "Socket is closed!" << endl; stream.close(); } return SUCCESS; }
void RemoteFunc::execute() { ComValue arg1v(stack_arg(0)); ComValue arg2v(stack_arg(1)); ComValue arg3v(stack_arg(2)); static int nowait_sym = symbol_add("nowait"); ComValue nowaitv(stack_key(nowait_sym)); reset_stack(); #ifdef HAVE_ACE #if __GNUC__==3&&__GNUC_MINOR__<1 fprintf(stderr, "Please upgrade to gcc-3.1 or greater\n"); push_stack(ComValue::nullval()); return; #endif ACE_SOCK_STREAM *socket = nil; ACE_SOCK_Connector *conn = nil; SocketObj* socketobj = nil; const char* cmdstr = nil; if (arg1v.is_string() && arg2v.is_num() && arg3v.is_string()) { cmdstr = arg3v.string_ptr(); const char* hoststr = arg1v.string_ptr(); const char* portstr = arg2v.is_string() ? arg2v.string_ptr() : nil; u_short portnum = portstr ? atoi(portstr) : arg2v.ushort_val(); ACE_INET_Addr addr (portnum, hoststr); socket = new ACE_SOCK_STREAM; conn = new ACE_SOCK_Connector; if (conn->connect (*socket, addr) == -1) { ACE_ERROR ((LM_ERROR, "%p\n", "open")); push_stack(ComValue::nullval()); return; } } else if (arg1v.is_object() && arg2v.is_string()) { cmdstr = arg2v.string_ptr(); socketobj = (SocketObj*)arg1v.geta(SocketObj::class_symid()); if (socketobj) socket = socketobj->socket(); } else return; #if 0 #if __GNUC__<3 filebuf ofbuf; ofbuf.attach(socket->get_handle()); #elif __GNUC__<4 && !defined(__CYGWIN__) fileptr_filebuf ofbuf((int)socket->get_handle(), ios_base::out, false, static_cast<size_t>(BUFSIZ)); #else fileptr_filebuf ofbuf((int)socket->get_handle(), ios_base::out, static_cast<size_t>(BUFSIZ)); #endif ostream out(&ofbuf); out << cmdstr; if (cmdstr[strlen(cmdstr)-1] != '\n') out << "\n"; out.flush(); #else int i=0; do { write(socket->get_handle(), cmdstr+i++, 1); } while ( cmdstr[i]!='\0'); if (cmdstr[i-1] != '\n') write(socket->get_handle(), "\n", 1); #endif if (nowaitv.is_false()) { #if __GNUC__<3 filebuf ifbuf; ifbuf.attach(socket->get_handle()); istream in(&ifbuf); char* buf; in.gets(&buf); #else char buf[BUFSIZ]; int i=0; do { read(socket->get_handle(), buf+i++, 1); } while (i<BUFSIZ-1 && buf[i-1]!='\n'); if (buf[i-1]=='\n') buf[i]=0; #endif ComValue retval(comterpserv()->run(buf, true)); push_stack(retval); } if(!socketobj) { if (socket->close () == -1) ACE_ERROR ((LM_ERROR, "%p\n", "close")); delete socket; delete conn; } return; #else cerr << "for the remote command to work rebuild comterp with ACE\n"; return; #endif }