私のプログラムで奇妙なことが起こっていますが、何をすべきかわかりません。これは、これまでの私のコードの疑似コードバージョンです。
サーバ:
//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関数の3番目の引数(現在はmaximumに設定されています)をいじってみると、プログラムの動作が異なります。ユーザーが最大100を入力すると、実際には完全に機能しますが、それ以上のものはそれを台無しにします。
私はこれがロングショットであることを知っていますが、誰かが私が間違っていることを見ることができますか?