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


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;
 }

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值