我用socket的API函数进行通讯:
客户机的发送是:
UINT ccstat.hi_point = 0;
UINT ccstat.lo_point = 1<<num;
float ccstat.dc_value = value;
send(conn_socket,(char *)&ccstat,12,0);
服务器的接受是:
char buf[12];
::recv(sock_msg,buf,12,0);
为什么总是接受不对,并且两个UINT都是对的,可是float总是不对,为什么??
难道不能直接传递float,如果这样的话怎么解决???????
客户机的发送是:
UINT ccstat.hi_point = 0;
UINT ccstat.lo_point = 1<<num;
float ccstat.dc_value = value;
send(conn_socket,(char *)&ccstat,12,0);
服务器的接受是:
char buf[12];
::recv(sock_msg,buf,12,0);
为什么总是接受不对,并且两个UINT都是对的,可是float总是不对,为什么??
难道不能直接传递float,如果这样的话怎么解决???????
Socket中,要如 ccstat *pCcstat = new ccstat;
pCcstat->hi_point = XXX;
pCcstat->dc_value = XXX;
send(conn_socket,(char *)pCcstat,sizeof(ccstat),0);
般才行。接收也是如此。自己编的那个删除了,大概如此吧。
客户机的发送是:
UINT pccstat->hi_point = 0;
UINT ccstat->lo_point = 1<<num;
float ccstat->dc_value = value;
send(conn_socket,(char *)pCcstat,sizeof(ccstat),0);
服务器的接受是:
::recv(conn_socket,(char *)pCcstat,sizeof(ccstat),0);
可是没有什么改善??
int转成网络字节: htons()
long转成网络字节: htonl()