I have some Problems using the recv() and send() functions.
here's my code:
#include "performConnection.h"
#include "errno.h"
//checks if the first arguement of an answer is "+"
bool checkPlus(char buffer[]){
int position = strcspn(buffer,"+");
if (position==0){
return true;
}
else{
return false;
}
}
int performConnection(int socketDescriptor){
bool check;
char buffer[256];
memset(&buffer, 0, sizeof(buffer));
char string[1024];
memset(&string, 0, sizeof(string));
int n; //Bytes received/send
//receiving data from server//accepting connections
n = recv(socketDescriptor, buffer, 255,0);
if(n<0){
perror("recv() failed");
printf("Exiting program");
return EXIT_FAILURE; //exit program if receive failed
}
else{
check = checkPlus(buffer); //+ check for positive answer
if (check==false){
perror("failure");
return EXIT_FAILURE; //exit program if -
}
}
printf("%s\n", buffer);
memset(buffer, 0, sizeof(buffer));
//send GAMEVERSION to server
n = send(socketDescriptor,GAMEVERSION, 255, 0);
if(n<0){
perror("send() failed");
printf("exiting program");
return EXIT_FAILURE; //exit program if send() fails
}
printf("Gameversion: %i, %s",n, GAMEVERSION);
//receive server data
n = recv(socketDescriptor, buffer, 255, 0);
if(n<0){
perror("recv() failed");
printf("Exiting program");
return EXIT_FAILURE; //exit program if recv() fails
}
else{
check = checkPlus(buffer); //+ check for positive answer
if (check==false){
perror("failure");
return EXIT_FAILURE; //exit program if negative answer
}
}
printf("%s\n", buffer);
memset(&buffer,0, sizeof(buffer));
strcpy(buffer,"ID K.GcY_EqHAs\n");
printf("%s\n",buffer);
n = send(socketDescriptor, buffer, 255,0);
if(n<0){
perror("send() failed");
printf("Exiting program");
return EXIT_FAILURE;
}
memset(&buffer, 0, sizeof(buffer));
n = recv(socketDescriptor, buffer, 255, 0);
if(n<0){
perror("recv() failed");
printf("Exiting program");
printf("\n%s\n", buffer);
return EXIT_FAILURE; //exit program if recv() fails
}
else{
check = checkPlus(buffer); //+ check for positive answer
if (check==false){
perror("failure");
return EXIT_FAILURE; //exit program if negative answer
}
}
printf("%s",buffer);
return EXIT_SUCCESS;
}
The connection is already established in another file.
Here's an example for positive Answers.
Server: + MNM Gameserver <<GameserverVersion>> accepting connections
Client: VERSION <<Client Version>>
Server: + Client version accepted - please send GameID to join
Client: ID <<ID>>
Server: + Playing
When something is wrong, server replies with "-".
so but i get this:
+MNM Gameserver v1.0 accepting connections
Gameversion: 255, VERSION 1.1
+Client version accepted - please send Game-ID to join
ID K.GcY_EqHAs
recv() failed: Connection reset by peer
Exiting program
Please, anyone help me, I have no ideas...
LG Max