2013-09-30 102 views
0

好吧,所以我试图实现Client-server程序(套接字编程)。如何将long long int的数字放入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); 

SO 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数组的元素。我该如何去做呢?

+1

顺便说一句:你的'copy [10]'太小了。一个简单的便携式缓冲区大小是'copy [sizeof(long long)* 3 + 3]'。 – chux

+0

谢谢我将它实施到我的代码 – sukhvir

回答

2

你不能这样做,因为你发送暧昧信息:Pre=278262617263可能意味着以下任何一项:

  • 一个数字数组278262617263
  • 两个号码278262617263
  • 数组两个数字的排列278262617263
  • 两个数字的排列278262617263
  • ...更多的相同
  • 的三个数字278262617263
  • 的阵列......我觉得你有这个想法

修复这个要求首先固定发件人:使确保您将数字与分隔符分开,并可选择发送数组中的项目数以避免动态重新分配 - 例如,

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

不再含糊不清:它表示您要发送5个项目,并且这些项目是分隔的。

+0

非常感谢先生...这工作 – sukhvir