changed TCP Payload assignment, added a sleep() betweeen ALL_STREAM_END and RESULT_REQUEST message to ensure server gets both messages
Этот коммит содержится в:
родитель
3023ce6ec5
Коммит
04b7ffa70f
@ -140,6 +140,8 @@ void receive_result_from_server(struct iperf_test *test)
|
|||||||
sp->settings->state = ALL_STREAMS_END;
|
sp->settings->state = ALL_STREAMS_END;
|
||||||
sp->snd(sp);
|
sp->snd(sp);
|
||||||
|
|
||||||
|
sleep(1);
|
||||||
|
|
||||||
sp->settings->state = RESULT_REQUEST;
|
sp->settings->state = RESULT_REQUEST;
|
||||||
sp->snd(sp);
|
sp->snd(sp);
|
||||||
|
|
||||||
@ -267,7 +269,6 @@ void Display(struct iperf_test *test)
|
|||||||
int iperf_tcp_recv(struct iperf_stream *sp)
|
int iperf_tcp_recv(struct iperf_stream *sp)
|
||||||
{
|
{
|
||||||
int result, message;
|
int result, message;
|
||||||
char ch;
|
|
||||||
int size = sp->settings->blksize;
|
int size = sp->settings->blksize;
|
||||||
char *buf = (char *) malloc(size);
|
char *buf = (char *) malloc(size);
|
||||||
if(!buf)
|
if(!buf)
|
||||||
@ -275,6 +276,8 @@ int iperf_tcp_recv(struct iperf_stream *sp)
|
|||||||
perror("malloc: unable to allocate receive buffer");
|
perror("malloc: unable to allocate receive buffer");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct tcp_datagram *tcp = (struct tcp_datagram *) buf;
|
||||||
|
|
||||||
do{
|
do{
|
||||||
result = recv(sp->socket, buf, size, 0);
|
result = recv(sp->socket, buf, size, 0);
|
||||||
|
|
||||||
@ -283,8 +286,7 @@ int iperf_tcp_recv(struct iperf_stream *sp)
|
|||||||
//interprete the type of message in packet
|
//interprete the type of message in packet
|
||||||
if(result > 0)
|
if(result > 0)
|
||||||
{
|
{
|
||||||
ch = buf[0];
|
message = tcp->state;
|
||||||
message = (int) ch;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(message == 3 || message == 9 || message == 8)
|
if(message == 3 || message == 9 || message == 8)
|
||||||
@ -382,30 +384,40 @@ int iperf_tcp_send(struct iperf_stream *sp)
|
|||||||
perror("malloc: unable to allocate transmit buffer");
|
perror("malloc: unable to allocate transmit buffer");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//memset(buf,0, size);
|
||||||
|
|
||||||
|
struct tcp_datagram *tcp = (struct tcp_datagram *) buf;
|
||||||
|
|
||||||
switch(sp->settings->state)
|
switch(sp->settings->state)
|
||||||
{
|
{
|
||||||
case STREAM_BEGIN:
|
case STREAM_BEGIN:
|
||||||
buf[0]= STREAM_BEGIN;
|
tcp->state = STREAM_BEGIN;
|
||||||
for(i=1; i < size; i++)
|
tcp->stream_id = (int)sp;
|
||||||
buf[i] = i % 37;
|
for(i = 2*sizeof(int); i < size ; i++)
|
||||||
|
buf[i] =0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case STREAM_END:
|
case STREAM_END:
|
||||||
buf[0]= STREAM_END;
|
tcp->state = STREAM_END;
|
||||||
|
printf("sent stream_end\n");
|
||||||
|
tcp->stream_id = (int)sp;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case RESULT_REQUEST:
|
case RESULT_REQUEST:
|
||||||
buf[0]= RESULT_REQUEST;
|
tcp->state = RESULT_REQUEST;
|
||||||
|
tcp->stream_id = (int)sp;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ALL_STREAMS_END:
|
case ALL_STREAMS_END:
|
||||||
buf[0]= ALL_STREAMS_END;
|
tcp->state = ALL_STREAMS_END;
|
||||||
|
tcp->stream_id = (int)sp;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
buf[0]= 0;
|
tcp->state = 0;
|
||||||
for(i=1; i < size; i++)
|
tcp->stream_id = (int)sp;
|
||||||
buf[i] = i % 37;
|
for(i = 2*sizeof(int); i < size; i++)
|
||||||
|
buf[i] =0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -419,7 +431,7 @@ int iperf_tcp_send(struct iperf_stream *sp)
|
|||||||
|
|
||||||
result = send(sp->socket, buf, size , 0);
|
result = send(sp->socket, buf, size , 0);
|
||||||
|
|
||||||
if(buf[0] != STREAM_END)
|
if(tcp->state != STREAM_END)
|
||||||
sp->result->bytes_sent+= size;
|
sp->result->bytes_sent+= size;
|
||||||
|
|
||||||
free(buf);
|
free(buf);
|
||||||
@ -498,7 +510,7 @@ int iperf_udp_send(struct iperf_stream *sp)
|
|||||||
result = send(sp->socket, buf, size, 0);
|
result = send(sp->socket, buf, size, 0);
|
||||||
|
|
||||||
if(sp->settings->state == STREAM_RUNNING)
|
if(sp->settings->state == STREAM_RUNNING)
|
||||||
printf("State = %d Outgoing packet = %d AND SP = %d\n",sp->settings->state, sp->packet_count, sp->socket);
|
// printf("State = %d Outgoing packet = %d AND SP = %d\n",sp->settings->state, sp->packet_count, sp->socket);
|
||||||
|
|
||||||
if(sp->settings->state == STREAM_RUNNING)
|
if(sp->settings->state == STREAM_RUNNING)
|
||||||
sp->result->bytes_sent+= result;
|
sp->result->bytes_sent+= result;
|
||||||
|
@ -47,7 +47,8 @@ struct iperf_stream
|
|||||||
int socket; // socket
|
int socket; // socket
|
||||||
struct timer *send_timer;
|
struct timer *send_timer;
|
||||||
|
|
||||||
/* for udp measurements - Need to change the members */
|
/* for udp measurements - This can be a structure outside stream,
|
||||||
|
and stream can have a pointer to this */
|
||||||
int packet_count;
|
int packet_count;
|
||||||
int stream_id; // stream identity
|
int stream_id; // stream identity
|
||||||
double jitter;
|
double jitter;
|
||||||
@ -116,6 +117,13 @@ struct udp_datagram
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
struct tcp_datagram
|
||||||
|
{
|
||||||
|
int state;
|
||||||
|
int stream_id;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
void add_interval_list(struct iperf_stream_result *rp, struct iperf_interval_results temp);
|
void add_interval_list(struct iperf_stream_result *rp, struct iperf_interval_results temp);
|
||||||
void display_interval_list(struct iperf_stream_result *rp);
|
void display_interval_list(struct iperf_stream_result *rp);
|
||||||
void send_result_to_client(struct iperf_stream *sp);
|
void send_result_to_client(struct iperf_stream *sp);
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user