0
我試圖使用ACE實現一個基本的客戶端服務器程序,但問題是如果我從客戶端發送並從服務器接收它,它工作正常。但是,當我增加複雜性時,即多次發送和恢復程序無法正常工作。任何幫助表示讚賞。ACE C++ send_n和recv_n不按預期工作
這裏是客戶端代碼。
#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);
}
如何通過套接字發送整數值?不像一個字符數組。我想發送它而不知道預定義的長度。 – KingC
通過套接字發送一個整數長度值會打開另一罐蠕蟲。現在,試着將服務器的send_n參數改爲(「RANDY!」,7)。有關長度等問題,請參閱我的/ Doug Schmidt的書「C++網絡編程第1卷」第4章。 –