int32_t ShortConnection::connect(const Inet_Addr& src_addr, const Inet_Addr& dst_addr) { CORE_DEBUG("src_addr = " << src_addr << ", TCP connect " << dst_addr ); //打开一个SOCKET if(sock_stream_.open(src_addr, true, false, true) != 0) { CORE_FATAL("open tcp failed! conn = " << this); return -1; } CORE_DEBUG("sort conection connector ...."); CSockConnector connector; if(connector.connect(sock_stream_, dst_addr) != 0) { sock_stream_.close(); CORE_FATAL("connect failed, remote addr = " << dst_addr << ", conn = " << this); return -1; } state_ = SHORT_CONN_CONNECTING; CORE_DEBUG("short conn, state = SHORT_CONN_CONNECTING, conn = " << this); REACTOR_INSTANCE()->register_handler(this, MASK_WRITE); //设置一个连接定时器 CORE_DEBUG("short conn set connect timer"); timer_id_ = set_timer(eShort_Connect_Timer, 23 * 1000); return 0; }
int32_t CConnection::connect(const Inet_Addr& src_addr, const Inet_Addr& dst_addr) { CORE_DEBUG("TCP connect " << dst_addr); //打开一个SOCKET if(sock_stream_.open(src_addr, true, false, true) != 0) { CORE_FATAL("open tcp failed! conn = " << this); return -1; } //主动方 conn_name_ = "connect connection"; CSockConnector connector; if(connector.connect(sock_stream_, dst_addr) != 0) { sock_stream_.close(); CORE_FATAL("connect failed, remote addr = " << dst_addr << ", conn = " << this); return -1; } state_ = CONN_CONNECTING; CORE_DEBUG("CConnection, state = CONN_CONNECTING, conn = " << this); //CORE_DEBUG("CConnection, register MASK_WRITE"); REACTOR_INSTANCE()->register_handler(this, MASK_WRITE); //设置一个连接定时器 CORE_DEBUG("set connect timer"); timer_id_ = set_timer(eConnect_Timer, 10 * 1000); return 0; }
int main() { // CLIENT // zu sendende Nachricht char message [MAX_CHARS]; // Adresse des Servers CInetAddr server_addr; // lokal server_addr.set(9000, "127.0.0.1"); // server_addr.set(9000, "172.17.15.191"); // Klasse zum Verbinden von Client und Server CSockConnector client; // TCP Client Datenstrom CSockStream client_stream; // Verbinde Client mit Server if (client.connect(client_stream, server_addr, true)) { printf("client successfully connected to server\n"); } else { printf("client not successfully connected to server\n"); // exit return 0; } sleep(10); // UInt8 sendvar; UInt8 sendvar[] = {'a','b'}; // printf("enter text: "); // cin >> sendvar; printf("client sending 2 bytes to server\n"); client_stream.write((const UInt8 * ) sendvar, 2); }