ACE c++ send_n 和 recv_n 未按预期工作
ACE c++ send_n and recv_n not working as expected
我正在尝试使用 ACE 实现一个基本的客户端-服务器程序,但问题是如果我从客户端发送并从服务器接收它,它可以正常工作。但是,当我增加复杂性时,即多次发送和接收程序无法正常工作。感谢任何帮助。
这是客户端代码。
#include "ace/SOCK_Acceptor.h"
#include "ace/SOCK_Connector.h"
#include "ace/SOCK_Stream.h"
#include "iostream"
using namespace std;
int main(){
ACE_INET_Addr server(7128);
ACE_SOCK_Connector cli;
ACE_SOCK_Stream cstream;
if(cli.connect(cstream, server)==-1){perror("Error");}
char buff[100];
if(-1==cstream.recv_n(buff, 7)){printf("Error");}
cout<<buff<<endl;
cstream.send_n("FU", 3);
}
这是服务器代码
#include "ace/SOCK_Acceptor.h"
#include "ace/SOCK_Connector.h"
#include "ace/SOCK_Stream.h"
#include "iostream"
using namespace std;
int main(){
ACE_INET_Addr server(7128);
ACE_INET_Addr client;
ACE_SOCK_Acceptor cli(server);
ACE_SOCK_Stream cstream;
if(cli.accept(cstream, &client)==-1){perror("Error");}
char buff[100];
if(-1==cstream.send_n("RAND", 5)){printf("Error");}
cstream.recv_n(buff, 3);
}
您的服务器正在发送 5 个字节,但您的客户端希望读取 7 个字节。客户端被阻止等待 2 个永远不会到来的字节。
我正在尝试使用 ACE 实现一个基本的客户端-服务器程序,但问题是如果我从客户端发送并从服务器接收它,它可以正常工作。但是,当我增加复杂性时,即多次发送和接收程序无法正常工作。感谢任何帮助。
这是客户端代码。
#include "ace/SOCK_Acceptor.h"
#include "ace/SOCK_Connector.h"
#include "ace/SOCK_Stream.h"
#include "iostream"
using namespace std;
int main(){
ACE_INET_Addr server(7128);
ACE_SOCK_Connector cli;
ACE_SOCK_Stream cstream;
if(cli.connect(cstream, server)==-1){perror("Error");}
char buff[100];
if(-1==cstream.recv_n(buff, 7)){printf("Error");}
cout<<buff<<endl;
cstream.send_n("FU", 3);
}
这是服务器代码
#include "ace/SOCK_Acceptor.h"
#include "ace/SOCK_Connector.h"
#include "ace/SOCK_Stream.h"
#include "iostream"
using namespace std;
int main(){
ACE_INET_Addr server(7128);
ACE_INET_Addr client;
ACE_SOCK_Acceptor cli(server);
ACE_SOCK_Stream cstream;
if(cli.accept(cstream, &client)==-1){perror("Error");}
char buff[100];
if(-1==cstream.send_n("RAND", 5)){printf("Error");}
cstream.recv_n(buff, 3);
}
您的服务器正在发送 5 个字节,但您的客户端希望读取 7 个字节。客户端被阻止等待 2 个永远不会到来的字节。