/** * This function initializes the tcp context global instance to 0 except for * file descriptor descriptor for stdin, stdout and stderr. * * @author Mohd Naushad Ahmed * @version 1.0 * @param none * @return none */ int tcp_process_request_cb ( int fd, int msg_type, char *data, int data_len ) { switch ((msg_req_type_t)msg_type) { case MSG_NEW_CONNECTION_REQ: (void) tcp_new_connection ( fd ); break; case MSG_DATA_RECEIVED_REQ: (void) tcp_clr_read_fd ( fd ); http_process_http_req ( fd, data, data_len ); (void) tcp_set_write_fd ( fd ); break; case MSG_CLOSE_CONNECTION_REQ: (void) tcp_close_connection ( fd ); break; case MSG_DATA_SENT_REQ: (void) tcp_clr_write_fd ( fd ); http_process_http_response ( fd, data, data_len ); (void) tcp_set_read_fd ( fd ); break; default: //log_dbg("NO CASE IS MATCHED"); break; } return ( 0 ); }/* tcp_process_request_cb */
int main(int argc, char *argv[]) { //================De aici=============================== static struct connection *connn; char buffer[256]; wsa_init();//ai nevoie de functia asta in main connectfd = tcp_connect_to_server(argv[1], atoi(argv[2])); DIE(connectfd == INVALID_SOCKET, "tcp_connect_to_server"); /* Instantiate new connection handler. */ connn = connection_create(connectfd); //Aici in primul receive primesti datele gen pozitii initiale memcpy(connn->send_buffer,"-1.000000 -1.000000 -324.042542 -0.000003 -305.136108 303.976868 158.605179 -160.047546",75); connn->bytes_sent = 3; printf("Sent : %s\n",&connn->send_buffer); connection_schedule_socket_send(connn); Sleep(100); connection_schedule_socket_receive(connn); printf("buffer : %s\n",connn->recv_buffer); //=========================Pana aici=========================== //=====================trebuie pus in mainul tau====================== /* client main loop ;acest loop poate fi pus intr-o functie daca vrei*/ while (1) { //Astepti comanda de la tastatura printf("Please enter the command (or 'quit' to exit): \n"); memset(buffer, 0 , 256); fgets(buffer, 255, stdin); if (buffer[0]=='q'){ tcp_close_connection(connn->sockfd); exit(0); } //Copiezi comanda pentru a o trimite la server memcpy(connn->send_buffer,buffer,256); connn->bytes_sent = 256; printf("Sent : %s\n",&connn->send_buffer); connection_schedule_socket_send(connn); Sleep(100); connection_schedule_socket_receive(connn); //desi nu e nevoie acum in buffer e tot ce ai primit de la server memcpy(buffer,connn->recv_buffer,256); //========================================== //Aici poti s afolosesti campul connn->recv_buffer sau buffer pentru a procesa datele tale;eu doar le afisez //============================================ printf("Received: %s\n",&connn->recv_buffer); } wsa_cleanup();//ai nevoie de functia asta in main return 0; }
void DiameterServerConnection::terminate(bool tls_shutdown) { if (dia_conn) { if (tls_shutdown) tcp_tls_shutdown(dia_conn); tcp_close_connection(dia_conn); tcp_destroy_connection(dia_conn); dia_conn = NULL; } }