C/S模式不停的传送浮点数,每次500个,
用socket, bind ,send recv等传送字符型已经可以了,但是send和recv只能传送char *,不能其他类型,
ACsyncsocket(记不清,呵呵,不好意思)的Send和Recv好像可以,具体怎么作?但是ACsyncsoket定义m_socket后,m_socket.Create(), m_socket.Bind()却绑定错误,用GetLastErr()得到错误代码10022什么意思?
用socket, bind ,send recv等传送字符型已经可以了,但是send和recv只能传送char *,不能其他类型,
ACsyncsocket(记不清,呵呵,不好意思)的Send和Recv好像可以,具体怎么作?但是ACsyncsoket定义m_socket后,m_socket.Create(), m_socket.Bind()却绑定错误,用GetLastErr()得到错误代码10022什么意思?
解决方案 »
- 有CHECKBOXE(LVS_EX_CHECKBOXES)的CListCtrl怎么设置默认添加一行即CHECKBOXE选上
- 控件显示乱码
- 请问一下怎么样给指定IP端口发数据包呀?
- 对话框程序中,如何知道用户非正常退出?
- 请教大家一个基础问题,关于COM+的
- VC++6.0下CDateTimeCtrl控件怎样使用?最好能给出代码,万分急,谢谢大虾了。
- 请大家讨论讨论 ListCtrl/FlexGrid/DBList/DataList 使用,来者有分。
- 拜求:运动车辆的检测的方法后代码
- 如果你精通FileSystemApiHook, 那就问你个难题。
- 谁来拿分?
- 实时采集数据写文件,文件碎片问题。
- 菜单命令消息的不解
struct head
{
int datatype;//数据类型整型还是浮点
int datalen;//数据长度整个发送数据包的长度
int datanum;//数据个数;
}
char* buf[4096];
struct head *h;
h=(struct head*)buf;//这个是头信息
char* data;
data=buf+sizeof(head);//这个是数据起始位置
剩下的就不需要我写了吧!!
---------------------
vc tools -----> Error Lookup
SOCKET s,
const char FAR *buf,
int len,
int flags
);
你把你的浮点数的指针强制转化成const char*,制定合适的缓冲区长度即可
int nLength = sizeof(fBeSend);//sizeof(float);
int send(s, (char*)(&fBeSend), nLength, 0);
那样的话,我每组500个怎么确定?每组顺序对我也很重要啊,开始结束等
首先楼主并没有说明什么具体的通讯约定,从其字面上看,仅仅是Socket传输数据,send函数是不管你的传输数据是不是什么文本或者非文本的,仅仅是传送定长的数据,下面例子是一个网络传输文件的小程序(当然可以是二进制文件)bluebohe.go.nease.net/send.zip
{
float m_fMoney;
};main()
{
struct aaa m_FloatData;
m_FloatData.m_fMoney = 10.1234;
...
Send(SocketHandle, (void *)&m_FloatData, sizeof(struct aaa));
...
}应该看得懂把。
Send(SocketHandle, (char *)&m_FloatData, sizeof(struct aaa));就这个意思,试试吧
--------------------------------------
S:[1]Float1
R:[1]
S:[1]SUC//SUCCESS
R:[1]SUC
S:[2]Float2
R:[2]
S:[2]RES//Resend
R:[2]RES
S:[2]Float2
R:[2]
S:[2]SUC
......
你只考虑传送数据,不考虑数据的还原,那么这些数据的结果还有什么用呢?!!
class TNetYCData
{
public:
WORD YCNum;
double YCData[_500];
};
for (i=0;i<RTUS[SendRTUNo].YCNum;i++)
pSendYC->YCData[i] = YCValue[i];
数据还原不是问题,基本上不用考虑,强制转化就行了
收到数据后const char*强制转化成浮点数的指针
比如在16位系统下:int --16bit
32位系统下:
int --32bit
此时由16位系统给32位系统发送数据:
int a[10];
在32位系统中进行还原改如何做呀?
按照简单的指针操作,后果不用我说了吧!。。
如果不考虑兼容性问题,这个当然是非常简单了!如果考虑兼容性,怕是就。
还原这类数据并不会有太大的麻烦,就算字节顺序不一样,也就是多一些位操作而已。看楼主的意思应该是兼容的平台,不需要这么麻烦。如果实在没把握,可以把数据转成字符串来传送,比如上面的数据,传送时只需要传:
I4FFFFEEEE就行了,第一字节F表示是整数,第二字节表示16位,这些都可自定义的。接收到了以后用atoi转换就行。基本上不用考虑字节顺序,不过效率就低多了。