【发布时间】:2016-03-22 10:03:22
【问题描述】:
我正在尝试使用 C 程序在客户端和服务器之间进行通信。我希望我的服务器随机生成一个数组,将其发送到客户端并从客户端到服务器取回排序后的数组。但是,当我打印服务器发送的数组时,客户端只显示零。我猜服务器中的发送功能或客户端中的接收/读取功能存在问题。这是我的代码:
服务器端: 1-创建一个随机数组
//int ip[255];
void GenIpArray()//generate random values and store in ip[]
{
for(int i=0;i<255;i++)
{
ip[i]= rand()%100 + 100;
}
}
2-向客户端发送数组
void write(LPVOID sock_fd)//int sock_fd=socket(AF_INET,SOCK_STREAM,0);
{
while(1)
{
send((int)sock_fd,(char*)&ip,255,0);
//let int ip[255] = {123, 109, 240, 150};
}
}
客户端: 1- 从服务器接收
void read(LPVOID sock_fd)
{
while(1)
{
if(recv((unsigned int)sock_fd,(char*)&arr,255,0)>0)
{
printf("recevied: ");
strcpy((char*)x, (char*)arr);
printf("%c",(char *)&x);//this statement prints @
printArray();//function to print array
break;
}
}
}
2- 打印数组的函数
void printArray()
{
printf("\n\n Printing the array:\n");
for(int k=0;k<255;k++)
printf("\n %d",x[k]);
}
【问题讨论】:
-
ip和arr是如何定义的? -
我尝试删除 & 但输出没有变化。我将 arr 声明为 int arr[255];和 ip 作为 int ip[255]; x 是 int x[255];
-
你发的不够多:见stackoverflow.com/help/mcve
-
sizeof(ip) 不是 255,而是 sizeof(int)*255,尝试在 send()/recv() 中使用它作为 size
-
你需要捕获/打印/调试
recv和send的实际返回值。