コード例 #1
0
/**
 * 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 */
コード例 #2
0
ファイル: iocp_echo_client.c プロジェクト: elf11/GPGPU
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;
}
コード例 #3
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;
  }
}