客户端/服务器的通信而不是返回随机数是返回随机符号

问题描述

我需要打印服务器发送的随机数,而不是打印随机符号 它是一个类似于彩票的程序,它给了我 5 个数字和 2 颗星 我正在寻找解决方案,但没有找到任何解决方案。有人可以帮忙吗? 这是我的代码,重要的一个: ......................................

//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,};
    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,0);

        }
        else if (strcmp(strRec,"bye") == 0) {

            strcpy(strMsg,"Bye client...\n");
            send(clientSocket,0);
            Sleep(1000);
            system("pause");
            break;
        }
        else {

            fputs("You: ",stdout);
            fgets(strMsg,stdin);

            send(clientSocket,strlen(strMsg) - 1,0);  // (-1) para nao enviar \n
        }
    }

    // Close the socket
    closesocket(clientSocket);  

    //Cleanup winsock
    WSACleanup();

    return 1;
}

客户

    /*
    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,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;
}

Client Console

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)