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

📄 tcpmem.cc

📁 CNC 的开放码,EMC2 V2.2.8版
💻 CC
📖 第 1 页 / 共 5 页
字号:
    serial_number++;    if (recvn(socket_fd, temp_buffer, 12, 0, timeout, &recvd_bytes) < 0) {	if (recvn_timedout) {	    timedout_request = REMOTE_CMS_CHECK_IF_READ_REQUEST_TYPE;	    consecutive_timeouts = 1;	    status = CMS_TIMED_OUT;	    reenable_sigpipe();	    return 0;	} else {	    recvd_bytes = 0;	    fatal_error_occurred = 1;	    status = CMS_MISC_ERROR;	    reenable_sigpipe();	    return 0;	}    }    recvd_bytes = 0;    returned_serial_number = (CMS_STATUS) ntohl(*((u_long *) temp_buffer));    rcs_print_debug(PRINT_ALL_SOCKET_REQUESTS,	"TCPMEM recieved_reply: fd = %d, serial_number=%d, buffer_number=%d\n",	socket_fd, returned_serial_number, buffer_number);    if (returned_serial_number != serial_number) {	rcs_print_error	    ("TCPMEM: Returned serial number(%d) does not match expected serial number(%d).\n",	    returned_serial_number, serial_number);	reenable_sigpipe();	return (status = CMS_MISC_ERROR);    }    status = (CMS_STATUS) ntohl(*((u_long *) temp_buffer + 1));    header.was_read = ntohl(*((u_long *) temp_buffer + 2));    reenable_sigpipe();    return (header.was_read);}int TCPMEM::get_queue_length(){    if (reconnect_needed && autoreconnect) {	reconnect();    }    if (reconnect_needed) {	return (status = CMS_MISC_ERROR);    }    if (fatal_error_occurred) {	if (status >= 0) {	    status = CMS_MISC_ERROR;	}	return (status);    }    disable_sigpipe();    if (socket_fd <= 0) {	rcs_print_error	    ("TCPMEM::check_if_read: Invalid socket descriptor. (%d)\n",	    socket_fd);	reenable_sigpipe();	return (status = CMS_MISC_ERROR);    }    if (((int) handle_old_replies()) < 0) {	reenable_sigpipe();	return 0;    }    set_socket_fds(write_socket_fd);    *((u_long *) temp_buffer) = htonl((u_long) serial_number);    *((u_long *) temp_buffer + 1) =	htonl((u_long) REMOTE_CMS_GET_QUEUE_LENGTH_REQUEST_TYPE);    *((u_long *) temp_buffer + 2) = htonl((u_long) buffer_number);    int send_header_size = 20;    if (total_subdivisions > 1) {	*((u_long *) temp_buffer + 3) = htonl((u_long) current_subdivision);    }    if (sendn(socket_fd, temp_buffer, send_header_size, 0, timeout) < 0) {	status = CMS_MISC_ERROR;	reconnect_needed = 1;	reenable_sigpipe();	return (0);    }    serial_number++;    if (recvn(socket_fd, temp_buffer, 12, 0, timeout, &recvd_bytes) < 0) {	if (recvn_timedout) {	    timedout_request = REMOTE_CMS_GET_QUEUE_LENGTH_REQUEST_TYPE;	    consecutive_timeouts = 1;	    status = CMS_TIMED_OUT;	    reenable_sigpipe();	    return 0;	} else {	    recvd_bytes = 0;	    fatal_error_occurred = 1;	    status = CMS_MISC_ERROR;	    reenable_sigpipe();	    return 0;	}    }    recvd_bytes = 0;    returned_serial_number = (CMS_STATUS) ntohl(*((u_long *) temp_buffer));    rcs_print_debug(PRINT_ALL_SOCKET_REQUESTS,	"TCPMEM recieved_reply: fd = %d, serial_number=%d, buffer_number=%d\n",	socket_fd, returned_serial_number, buffer_number);    if (returned_serial_number != serial_number) {	rcs_print_error	    ("TCPMEM: Returned serial number(%d) does not match expected serial number(%d).\n",	    returned_serial_number, serial_number);	reenable_sigpipe();	return (status = CMS_MISC_ERROR);    }    status = (CMS_STATUS) ntohl(*((u_long *) temp_buffer + 1));    queuing_header.queue_length = ntohl(*((u_long *) temp_buffer + 2));    reenable_sigpipe();    return (queuing_header.queue_length);}int TCPMEM::get_msg_count(){    if (reconnect_needed && autoreconnect) {	reconnect();    }    if (reconnect_needed) {	return (status = CMS_MISC_ERROR);    }    if (fatal_error_occurred) {	if (status >= 0) {	    status = CMS_MISC_ERROR;	}	return (status);    }    disable_sigpipe();    if (socket_fd <= 0) {	rcs_print_error	    ("TCPMEM::check_if_read: Invalid socket descriptor. (%d)\n",	    socket_fd);	reenable_sigpipe();	return (status = CMS_MISC_ERROR);    }    if (((int) handle_old_replies()) < 0) {	reenable_sigpipe();	return 0;    }    set_socket_fds(write_socket_fd);    *((u_long *) temp_buffer) = htonl((u_long) serial_number);    *((u_long *) temp_buffer + 1) =	htonl((u_long) REMOTE_CMS_GET_MSG_COUNT_REQUEST_TYPE);    *((u_long *) temp_buffer + 2) = htonl((u_long) buffer_number);    int send_header_size = 20;    if (total_subdivisions > 1) {	*((u_long *) temp_buffer + 3) = htonl((u_long) current_subdivision);    }    if (sendn(socket_fd, temp_buffer, send_header_size, 0, timeout) < 0) {	status = CMS_MISC_ERROR;	reconnect_needed = 1;	reenable_sigpipe();	return (0);    }    serial_number++;    if (recvn(socket_fd, temp_buffer, 12, 0, timeout, &recvd_bytes) < 0) {	if (recvn_timedout) {	    timedout_request = REMOTE_CMS_GET_MSG_COUNT_REQUEST_TYPE;	    consecutive_timeouts = 1;	    status = CMS_TIMED_OUT;	    reenable_sigpipe();	    return 0;	} else {	    recvd_bytes = 0;	    fatal_error_occurred = 1;	    status = CMS_MISC_ERROR;	    reenable_sigpipe();	    return 0;	}    }    recvd_bytes = 0;    returned_serial_number = (CMS_STATUS) ntohl(*((u_long *) temp_buffer));    rcs_print_debug(PRINT_ALL_SOCKET_REQUESTS,	"TCPMEM recieved_reply: fd = %d, serial_number=%d, buffer_number=%d\n",	socket_fd, returned_serial_number, buffer_number);    if (returned_serial_number != serial_number) {	rcs_print_error	    ("TCPMEM: Returned serial number(%d) does not match expected serial number(%d).\n",	    returned_serial_number, serial_number);	reenable_sigpipe();	return (status = CMS_MISC_ERROR);    }    status = (CMS_STATUS) ntohl(*((u_long *) temp_buffer + 1));    header.write_id = ntohl(*((u_long *) temp_buffer + 2));    reenable_sigpipe();    return (header.write_id);}int TCPMEM::get_space_available(){    if (reconnect_needed && autoreconnect) {	reconnect();    }    if (reconnect_needed) {	return (status = CMS_MISC_ERROR);    }    if (fatal_error_occurred) {	if (status >= 0) {	    status = CMS_MISC_ERROR;	}	return (status);    }    disable_sigpipe();    if (socket_fd <= 0) {	rcs_print_error	    ("TCPMEM::check_if_read: Invalid socket descriptor. (%d)\n",	    socket_fd);	reenable_sigpipe();	return (status = CMS_MISC_ERROR);    }    if (((int) handle_old_replies()) < 0) {	reenable_sigpipe();	return 0;    }    set_socket_fds(write_socket_fd);    *((u_long *) temp_buffer) = htonl((u_long) serial_number);    *((u_long *) temp_buffer + 1) =	htonl((u_long) REMOTE_CMS_GET_SPACE_AVAILABLE_REQUEST_TYPE);    *((u_long *) temp_buffer + 2) = htonl((u_long) buffer_number);    int send_header_size = 20;    if (total_subdivisions > 1) {	*((u_long *) temp_buffer + 3) = htonl((u_long) current_subdivision);    }    if (sendn(socket_fd, temp_buffer, send_header_size, 0, timeout) < 0) {	status = CMS_MISC_ERROR;	reconnect_needed = 1;	reenable_sigpipe();	return (0);    }    serial_number++;    if (recvn(socket_fd, temp_buffer, 12, 0, timeout, &recvd_bytes) < 0) {	if (recvn_timedout) {	    timedout_request = REMOTE_CMS_GET_SPACE_AVAILABLE_REQUEST_TYPE;	    consecutive_timeouts = 1;	    status = CMS_TIMED_OUT;	    reenable_sigpipe();	    return 0;	} else {	    recvd_bytes = 0;	    fatal_error_occurred = 1;	    status = CMS_MISC_ERROR;	    reenable_sigpipe();	    return 0;	}    }    recvd_bytes = 0;    returned_serial_number = (CMS_STATUS) ntohl(*((u_long *) temp_buffer));    rcs_print_debug(PRINT_ALL_SOCKET_REQUESTS,	"TCPMEM recieved_reply: fd = %d, serial_number=%d, buffer_number=%d\n",	socket_fd, returned_serial_number, buffer_number);    if (returned_serial_number != serial_number) {	rcs_print_error	    ("TCPMEM: Returned serial number(%d) does not match expected serial number(%d).\n",	    returned_serial_number, serial_number);	reenable_sigpipe();	return (status = CMS_MISC_ERROR);    }    status = (CMS_STATUS) ntohl(*((u_long *) temp_buffer + 1));    free_space = ntohl(*((u_long *) temp_buffer + 2));    reenable_sigpipe();    return (free_space);}CMS_STATUS TCPMEM::clear(){    if (reconnect_needed && autoreconnect) {	reconnect();    }    if (reconnect_needed) {	return (status = CMS_MISC_ERROR);    }    if (fatal_error_occurred) {	if (status >= 0) {	    status = CMS_MISC_ERROR;	}	return (status);    }    if (socket_fd <= 0) {	rcs_print_error("TCPMEM::clear: Invalid socket descriptor. (%d)\n",	    socket_fd);	reconnect_needed = 1;	return (status = CMS_MISC_ERROR);    }    if (((int) handle_old_replies()) < 0) {	return status;    }    set_socket_fds(write_socket_fd);    *((u_long *) temp_buffer) = htonl((u_long) serial_number);    *((u_long *) temp_buffer + 1) =	htonl((u_long) REMOTE_CMS_CLEAR_REQUEST_TYPE);    *((u_long *) temp_buffer + 2) = htonl((u_long) buffer_number);    *((u_long *) temp_buffer + 3) = htonl((u_long) current_subdivision);    if (sendn(socket_fd, temp_buffer, 20, 0, timeout) < 0) {	reconnect_needed = 1;	return (status = CMS_MISC_ERROR);    }    serial_number++;    if (recvn(socket_fd, temp_buffer, 8, 0, timeout, &recvd_bytes) < 0) {	if (recvn_timedout) {	    timedout_request = REMOTE_CMS_CLEAR_REQUEST_TYPE;	    consecutive_timeouts = 1;	    return (status = CMS_TIMED_OUT);	} else {	    fatal_error_occurred = 1;	    reconnect_needed = 1;	    return (status = CMS_MISC_ERROR);	}    }    returned_serial_number = (CMS_STATUS) ntohl(*((u_long *) temp_buffer));    rcs_print_debug(PRINT_ALL_SOCKET_REQUESTS,	"TCPMEM recieved_reply: fd = %d, serial_number=%d, buffer_number=%d\n",	socket_fd, returned_serial_number, buffer_number);    if (returned_serial_number != serial_number) {	rcs_print_error	    ("TCPMEM: Returned serial number(%d) does not match expected serial number(%d).\n",	    returned_serial_number, serial_number);	reconnect_needed = 1;	return (status = CMS_MISC_ERROR);    }    status = (CMS_STATUS) ntohl(*((u_long *) temp_buffer + 1));    header.was_read = ntohl(*((u_long *) temp_buffer + 2));    return (status);}/*! \todo Another #if 0 */#if 0int TCPMEM::login(const char *name, const char *passwd){    if (fatal_error_occurred) {	if (status >= 0) {	    status = CMS_MISC_ERROR;	}	return (status);    }    if (socket_fd <= 0) {	rcs_print_error("TCPMEM::write: Invalid socket descriptor. (%d)\n",	    socket_fd);	return (status = CMS_MISC_ERROR);    }    int handle_old_reply_ret = 0;    while (timedout_request != NO_REMOTE_CMS_REQUEST && !handle_old_reply_ret) {	handle_old_reply_ret = handle_old_replies();    }    if (handle_old_reply_ret < 0) {	return 0;    }    set_socket_fds(write_socket_fd);    *((u_long *) temp_buffer) = htonl((u_long) serial_number);    *((u_long *) temp_buffer + 1) =	htonl((u_long) REMOTE_CMS_GET_KEYS_REQUEST_TYPE);    *((u_long *) temp_buffer + 2) = htonl((u_long) buffer_number);    if (sendn(socket_fd, temp_buffer, 20, 0, 30.0) < 0) {	return 0;    }    memset(temp_buffer, 0, 20);    strncpy(((char *) temp_buffer), name, 16);    if (sendn(socket_fd, temp_buffer, 16, 0, 30.0) < 0) {	return (status = CMS_MISC_ERROR);    }    serial_number++;    if (recvn(socket_fd, temp_buffer, 20, 0, 30.0, &recvd_bytes) < 0) {	return 0;    }    recvd_bytes = 0;    returned_serial_number = (CMS_STATUS) ntohl(*((u_long *) temp_buffer));    rcs_print_debug(PRINT_ALL_SOCKET_REQUESTS,	"TCPMEM recieved_reply: fd = %d, serial_number=%d, buffer_number=%d\n",	socket_fd, returned_serial_number, buffer_number);    if (returned_serial_number != serial_number) {	rcs_print_error	    ("TCPMEM: Returned serial number(%d) does not match expected serial number(%d).\n",	    returned_serial_number, serial_number);	return (0);    }    char *crypt1_ret = crypt(passwd, ((char *) temp_buffer) + 4);    if (NULL == crypt1_ret) {	rcs_print_error("TCPMEM::login() crypt function failed.\n");	return 0;    }    char passwd_pass1[16];    strncpy(passwd_pass1, crypt1_ret, 16);    char *crypt2_ret = crypt(passwd_pass1, ((char *) temp_buffer) + 12);    if (NULL == crypt2_ret) {	rcs_print_error("TCPMEM::login() crypt function failed.\n");	return (0);    }    char passwd_pass2[16];    strncpy(passwd_pass2, crypt2_ret, 16);    *((u_long *) temp_buffer) = htonl((u_long) serial_number);    *((u_long *) temp_buffer + 1) =	htonl((u_long) REMOTE_CMS_LOGIN_REQUEST_TYPE);    *((u_long *) temp_buffer + 2) = htonl((u_long) buffer_number);    if (sendn(socket_fd, temp_buffer, 20, 0, 30.0) < 0) {	return 0;    }    memset(temp_buffer, 0, 20);    strncpy(((char *) temp_buffer), name, 16);    if (sendn(socket_fd, temp_buffer, 16, 0, 30.0) < 0) {	return (status = CMS_MISC_ERROR);    }    if (sendn(socket_fd, passwd_pass2, 16, 0, 30.0) < 0) {	return (status = CMS_MISC_ERROR);    }    serial_number++;    if (recvn(socket_fd, temp_buffer, 8, 0, 30.0, &recvd_bytes) < 0) {	return 0;    }    recvd_bytes = 0;    returned_serial_number = (CMS_STATUS) ntohl(*((u_long *) temp_buffer));    rcs_print_debug(PRINT_ALL_SOCKET_R

⌨️ 快捷键说明

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