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

 

發佈了43 篇原創文章 · 獲贊 0 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章