Я работал над проектом для школы, где нам было поручено сделать игру в рулетку с 2 клиентами и сервером (TCP).
Так что я решил сделать пустую функцию как для сервера, так и для клиента, чтобы реализовать связь, но я столкнулся с этой ошибкой и не смог найти, где я ошибся, если кто-нибудь знает, пожалуйста, дайте мне знать! 🙂
Клиент:
void bet(int client,const int size,char message[])
{
char to_server[size];
if (recv(client,message,size,0) < 0)
{
Receive_Error obj;
throw obj;
}
std::cout << message << std::endl;
std::cin >>to_server;
if (send(client,to_server,sizeof(to_server),0) < 0)
{
Send_Error obj;
throw obj;
}
}
Сервер:
void bet(int client,char message[],const int size)
{
char to_client[size] = "Mire fogad ?\nColor[b/r] + Number [0-9] + Bet\n";
if (send(client,to_client,sizeof(to_client),0) < 0)
{
Send_Error obj;
throw obj;
}
if (recv(client,&message,size,0) < 0)
{
Receive_Error obj;
throw obj;
}
std::cout << message ;
}
В обеих сторонах переменная «message» выглядит так:
char* message = new char[size];
for ( not important )
{
bet(client_socket,message,size)
}
delete[] message;
size — это const int со значением 256;
PS: Причина, по которой я пометил и C, и C ++, заключается в том, что это требование использовать функции C (включены в sys / socket.h, sys / types.h, netinet / in.h), но я в основном изучал C ++, поэтому Я пытаюсь срезать углы.
Хорошо, после долгого времени, даже 100 был слишком большим буфером, поэтому я снизил его до 50.
Других решений пока нет …