试图建立一个代理服务器。
从客户端接收 -> 发送到服务器 -> 从服务器接收 -> 发送到客户端。
代理从客户端接收正确的数据。
但在那之后,我从服务器接收了 0 个字节。
这是我应该从客户端接收并发送到服务器的数据包
0A 00 2C 01 23 00 0C 00 B3 01
这是我的代码;
//intercept commu by server <-> client
memset(buffer, 0, buffer_len);
//recv from client
if((bytecount = recv(*csock, buffer, buffer_len, 0))== -1){
fprintf(stderr, "Err: receiving data %d\n", errno);
return 0;
}
//display what we got from the client
printf("Received bytes %d\n", bytecount);
for ( int i = 0; i < bytecount; i++ ) {
printf( "%02x ", static_cast<unsigned char>( buffer[i] ) );
}
printf("\n");
//send to server what we got from the client
if((gbytecount=send(gsock, buffer, buffer_len, 0))== -1){
fprintf(stderr, "Error sending data %d\n", errno);
goto FINISH;
}
//recv from server
if((gbytecount = recv(gsock, buffer, buffer_len, 0))== -1){
fprintf(stderr, "Error receiving data %d\n", errno);
return 0;
}
printf("Received bytes %d\n", gbytecount);
for ( int i = 0; i < gbytecount; i++ ) {
printf( "%02x ", static_cast<unsigned char>( buffer[i] ) );
}
printf("\n");
//send back to client what we got from the server
if((bytecount = send(*csock, buffer, buffer_len, 0))== -1){
fprintf(stderr, "Err: sending data %d\n", errno);
return 0;
}
从客户端接收后,如何检查代理向服务器发送的内容?
我的逻辑有问题吗?
更新
我想我发现了问题,它是因为 buffer_len。
现在我有 recv() 字节 93。但服务器再次发送另一个数据包。
我该怎么处理我的代码?
目前我的代码是:
recv from client -> send to server -> recv from server -> send to client.
我怎样才能使这个代码像如果客户端/服务器发送一些东西,它会
转发给对方?
更新
必须解决它。谢谢。