我的程序发生了一些奇怪的事情,我不确定我应该做什么。这是到目前为止我的代码的伪代码版本:
服务器:
//Set up Server sockets
int maximum;
// Collect the maximum
cout << "\nEnter a Maximum:";
cin >> maximum;
cout << "\n";
int *array = new int[maximum + 1];
memset(array, 0, sizeof(array));
while(array[0] < anInt){
//receive the array from the client
if(recv(newsockfd, array, maximum, 0) < 0){
perror("ERROR receiving from socket");
}
mathFunction(array); //A function that alters the contents of array
array[0]++;
//If array[0] isn't too big
if(array[0] < anInt){
// Send the array to the client
if(send(newsockfd, array, maximum, 0) < 0){
perror("ERROR sending to socket");
}
}
}
客户:
//Set up Client sockets
//The maximum was already sent over earlier
int *array = new int[maximum + 1];
while(array[0] < anInt){
//receive the array from the server
if(recv(sockfd, array, maximum, 0) < 0){
perror("ERROR receiving from socket");
}
mathFunction(array); //A function that alters the contents of array
array[0]++;
if(send(sockfd, array, maximum, 0) < 0){
perror("ERROR sending to socket");
}
}
我的问题是我不断收到“对等连接重置”错误,这导致分段错误,使我的程序崩溃。此外,在使用 send/recv 函数的第三个参数(当前设置为maximum)时,我的程序的行为不同。如果用户输入最多 100 个,它实际上会完美运行,但除此之外的任何东西都搞砸了。
我知道这是一个很长的镜头,但是任何人都可以看到我做错了什么吗?