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