我正在使用TCP服务器中的rand()函数发送数据类型为uint8的生成的随机值的大1d数组,但是由于在TCP客户端上没有接收到任何内容,数据类型可能是个问题。控制台还告诉我,代码每次都会生成相同的“204”值,即使我使用的是rand()函数。

#define DEFAULT_BUFLEN 19200

int main(int argc , char *argv[])
{
WSADATA wsa;
SOCKET server_socket, client_socket;
struct sockaddr_in server_addr, client_addr;
int c, iResult;
char sendbuf [DEFAULT_BUFLEN];
int sendbuflen = DEFAULT_BUFLEN;
uint8_t* p;
int i;


// Send uint8_t data to client
p = (uint8_t*)sendbuf;

for (i = 0; i < 19200; i++)
{
  p[i] = rand() % 256; //range 0-255 */
  i++;
  printf("%d\n", p[i]);
}
return 0;

iResult = send(client_socket, sendbuf, sendbuflen, 0);
}

最佳答案

您需要为rand函数设置种子。使用srand(time(NULL))进行播种同时从循环体中移除i++;语句。

关于c - 在C中使用rand(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21077062/

10-13 05:42