Arrays 套接字编程与数组 你好,我正在尝试创建2个程序,它们在C++上通过TCP套接字通信。我知道如何使用write()和read()函数,但在尝试将数组从一个程序发送到另一个程序时遇到了问题。 更具体地说,我尝试从一边发送一个字符数组,然后读给另一边,但它不起作用

Arrays 套接字编程与数组 你好,我正在尝试创建2个程序,它们在C++上通过TCP套接字通信。我知道如何使用write()和read()函数,但在尝试将数组从一个程序发送到另一个程序时遇到了问题。 更具体地说,我尝试从一边发送一个字符数组,然后读给另一边,但它不起作用,arrays,sockets,file-descriptor,Arrays,Sockets,File Descriptor,我尝试发送的数组定义如下: char** list=new char[5]; for(int i=0;i<5;i++){ char[i]=new char[25] } char[0]="Hello"; char[1]="world"; char[2]="this"; char[3]="is"; char[4]="a test"; void sendtosocket(.. , char

我尝试发送的数组定义如下:

char** list=new char[5];
for(int i=0;i<5;i++){
char[i]=new char[25]
}

char[0]="Hello";
char[1]="world";
char[2]="this";
char[3]="is";
char[4]="a test";
 void sendtosocket(.. , char array[]) { 
    int size=5*sizeof(char[25]);
    write(sock, &size, sizeof(int))
        write(sock,&array,size); 
}
void readfromsocket(..){

read(sock, &size, sizeof(int));  
char test[5][25];
cout<<size<<" bytes must be read"<<endl;

 read(newsock,&test,size);              

for(int i=0;i<5;i++)
 cout<<test[i]<<endl;

}
从另一个角度来看,我试着这样解读:

char** list=new char[5];
for(int i=0;i<5;i++){
char[i]=new char[25]
}

char[0]="Hello";
char[1]="world";
char[2]="this";
char[3]="is";
char[4]="a test";
 void sendtosocket(.. , char array[]) { 
    int size=5*sizeof(char[25]);
    write(sock, &size, sizeof(int))
        write(sock,&array,size); 
}
void readfromsocket(..){

read(sock, &size, sizeof(int));  
char test[5][25];
cout<<size<<" bytes must be read"<<endl;

 read(newsock,&test,size);              

for(int i=0;i<5;i++)
 cout<<test[i]<<endl;

}
void readfromsocket(..){
读取(sock和size,sizeof(int));
煤焦试验[5][25];

CUT

这里有很多问题…我会尝试指出一些问题,但是考虑到其中一些是关于C++基础的。

首先,在:

char** list=new char[5];
for(int i=0;i<5;i++){
char[i]=new char[25]
}

char[0]="Hello";
char[1]="world";
char[2]="this";
char[3]="is";
char[4]="a test";

我假设您认为数组在连续内存中。这是绝对错误的。请检查变量的初始化,并考虑如何发送它。

这显然是错误的:

char** list=new char[5];
for(int i=0;i<5;i++){
    char[i]=new char[25]
}

char[0]="Hello";
char[1]="world";
char[2]="this";
char[3]="is";
char[4]="a test";
char**list=新字符[5];

对于(int i=0;i+C++),考虑使用Boosix:Asio()或OnPosix()库。是的,我的假设,认为在连续内存中是非常错误的,我修复了它。