问题描述
我需要打印服务器发送的随机数,而不是打印随机符号 它是一个类似于彩票的程序,它给了我 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;
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)