I need to print random numbers that servers sends, but instead its printing random symbols Its a program like lottery, that gives me 5 numbers and 2 stars I search for solution but I didn't find any. Someone can help? This is my code, the important one: .................................
//Código do server
#include <stdio.h>
#include <stdlib.h>
#include <winsock2.h>
#include <time.h>
#include <Windows.h>
#include <cstdint>
#define TRUE 1
#define DS_TEST_PORT 68000
#pragma comment (lib, "ws2_32.lib")
#pragma warning(disable : 4996)
int main()
{
// Initialise winsock
WSADATA wsData;
WORD ver = MAKEWORD(2, 2);
int chave[7] = { 0, 0, 0, 0, 0, 0, 0, };
srand(time(0));
.........
// Main program loop
char strMsg[1024];
char strRec[1024];
int i = 1;
strcpy(strMsg, "\nHello! welcome to the server...\n");
printf("\n%s\n", strMsg);
send(clientSocket, strMsg, strlen(strMsg) + 1, 0);
while (TRUE) {
ZeroMemory(strRec, 1024);
ZeroMemory(strMsg, 1024);
int bytesReceived = recv(clientSocket, strRec, 1024, 0);
if (bytesReceived == SOCKET_ERROR) {
printf("\nReceive error!\n");
break;
}
if (bytesReceived == 0) {
printf("\nClient disconnected!\n");
break;
}
printf("Client: %s\n", strRec);
if (strcmp(strRec, "chave") == 0) {
for (int j = 0; j < 5; j++) {
strMsg[j] = rand() % 50;
}
for (int k = 5; k < 7; k++) {
strMsg[k] = rand() % 12;
}
send(clientSocket, strMsg, strlen(strMsg) + 1, 0);
}
else if (strcmp(strRec, "bye") == 0) {
strcpy(strMsg, "Bye client...\n");
send(clientSocket, strMsg, strlen(strMsg) + 1, 0);
Sleep(1000);
system("pause");
break;
}
else {
fputs("You: ", stdout);
fgets(strMsg, 1024, stdin);
send(clientSocket, strMsg, strlen(strMsg) - 1, 0); // (-1) para nao enviar \n
}
}
// Close the socket
closesocket(clientSocket);
//Cleanup winsock
WSACleanup();
return 1;
}
Client
/*
Simple winsock client
*/
int main(int argc, char* argv[])
{
WSADATA wsa;
SOCKET s;
struct sockaddr_in server;
char bye[] = "bye\n";
char* message = (char*)malloc(2000);
char server_reply[2000];
int recv_size;
int ws_result;
.............
while (TRUE)
{
ZeroMemory(message, 1024);
ZeroMemory(server_reply, 1024);
fputs("Escreva chave para receber uma chave, escreva bye para sair do programa\n ", stdout);
fgets(message, 1024, stdin);
ws_result = send(s, message, strlen(message) - 1, 0); // (-1) para nao enviar \n
if (ws_result < 0)
{
puts("Send failed");
return 1;
}
//Receive a reply from the server
recv_size = recv(s, server_reply, 2000, 0);
if (recv_size == SOCKET_ERROR)
{
puts("recv failed");
}
printf("Server: %s\n", server_reply);
if (strcmp(message, bye) == 0)
{
system("pause");
break;
}
}
// Close the socket
closesocket(s);
//Cleanup winsock
WSACleanup();
return 0;
}