linux和window下socket接口函数的传入参数不匹配,导致出错。

来源:互联网 发布:opencv 图像加减源码 编辑:程序博客网 时间:2024/04/29 16:50


linux下的socket接口函数:

send(,void*data,);
receive(,void*data,);


 

window下的socket接口函数:

send(,FAR const char *data,);
recieve(,FAR const char *data,);

 

如果服务器在linux端,而客户端在window下,不对处理,就会出现数据接收显示出错。

下面一段代码可以说明采用动态内存方式接收数据,用所需类型指针来读取内存数据,可以解决这个问题。

 

#include <stdio.h>#include <stdlib.h>#include <string.h>typedef struct {char c[10];int a;char b;} IP;int main(int agrc,char *argv[]){IP ip={"hello",4,-45};//strcpy(ip.c,"world");IP *j;char *p;p=( char *)malloc(sizeof(IP));  申请内存,并赋予char型指针j=p; 相当于一个内存区地址被赋予两种不同数据类型的指针,你用哪个指针就可以把内存中的数据解析成那种数据类型。memcpy(p,&ip,sizeof(IP));  将结构体数据拷入内存 发送的时候就可以传参 P   printf("p data is :%s,%d,%d",j->c,j->a,j->b);   free(p);getchar();   return 1; }

 

原创粉丝点击