0

好的,所以我正在尝试实现客户端-服务器程序(套接字编程)。

我的客户发送嵌入在这样的字符串中的 long long int:

char copy[10];
sprintf(send_data,"%s","Pre=");

for(i=0;i<7;i++){
    sprintf(copy,"%lld",premaster[i]);
    strcat(send_data,copy);
}

printf("\nSending CLIENT_KEY_EXCHANGE message\n");
send(sock,send_data,strlen(send_data), 0);

所以 send_data 看起来像Pre=278262617263

现在在服务器端是这样的:

long long int preMaster;
long long int pre[100]={0};

numBytes = recv(clntSock,inMsg,1024,0); 
inMsg[numBytes] = '\0';

sscanf(inMsg, "Pre=%lld", &preMaster);

现在我想把这个 preMaster 转换成 pre 数组的元素。我该怎么做呢?

4

1 回答 1

2

您不能这样做,因为您发送的信息不明确:Pre=278262617263可能意味着以下任何一种:

  • 一个数字的数组278262617263
  • 两个数字的数组278262617263
  • 两个数字的数组278262617263
  • 两个数字的数组278262617263
  • ...更多相同
  • 一个由三个数字组成的数组27826261726以及3
  • ...我想你明白了

解决此问题需要首先修复发送者:确保使用分隔符分隔数字,并可选择发送数组中的项目数以避免动态重新分配 - 例如,

Pre=5:27,826,26,17,263

不再模棱两可:它说您要发送 5 个项目,并且这些项目是分隔的。

于 2013-09-30T02:14:12.990 回答