郁闷了!写socket时,无法将结构体转换成char*发送
2010-09-15 23:18
330 查看
发在CSDN的帖子,还没人回复:(
结构体:
struct myData
{
float startFlow;
float endFlow;
float leakDistance[5];
};
赋值:
myData dataToServer;
dataToServer......
发送:
myClient.sendData((char*)&dataToServer,sizeof(myData))
sendData函数:
int myTcpSocket::sendData(const char* data, int nDataLength)
{
int numBytes; // the number of bytes sent
if(sizeof(data)!=nDataLength) return -1;
// Sends the message to the connected host
try
{
if (numBytes = send(socketId,data,nDataLength,0) == -1)
(下略)
或许if(sizeof(data)!=nDataLength)这样的比较不对,但问题的关键不在这。
通过跟踪调试,发现sendData函数中的data为空,也就是说结构体没有传进来!
结构体里的变量是float型的,是不是字节长,然后转换成char时是0,结果就成了字符串的结尾符号了?难道是这个原因?
我曾试过结构体里面放两个char类型的变量,似乎就能正常运转。
这个转换难道还挑数据类型?不会吧?
环境:VC6
Someone help me!
结构体:
struct myData
{
float startFlow;
float endFlow;
float leakDistance[5];
};
赋值:
myData dataToServer;
dataToServer......
发送:
myClient.sendData((char*)&dataToServer,sizeof(myData))
sendData函数:
int myTcpSocket::sendData(const char* data, int nDataLength)
{
int numBytes; // the number of bytes sent
if(sizeof(data)!=nDataLength) return -1;
// Sends the message to the connected host
try
{
if (numBytes = send(socketId,data,nDataLength,0) == -1)
(下略)
或许if(sizeof(data)!=nDataLength)这样的比较不对,但问题的关键不在这。
通过跟踪调试,发现sendData函数中的data为空,也就是说结构体没有传进来!
结构体里的变量是float型的,是不是字节长,然后转换成char时是0,结果就成了字符串的结尾符号了?难道是这个原因?
我曾试过结构体里面放两个char类型的变量,似乎就能正常运转。
这个转换难道还挑数据类型?不会吧?
环境:VC6
Someone help me!
相关文章推荐
- error C2440: “=”: 无法从“CString”转换为“const char *”
- VC++的小问题:const char[]无法转换到LPCWSTR
- 无法将参数 1 从“char ”转换为“LPWSTR”
- TCP socket发送整形数据(数组,结构体)
- VS解决error C2664: “DWORD GetCurrentDirectoryW(DWORD,LPWSTR)”: 无法将参数 2 从“char [260]”转换为“LPWSTR
- BOOL CreateProcessW: 无法将参数 2 从“char [4]”转换为“LPWSTR” 错误的解决方法
- Linux C Socket编程发送结构体、文件详解及实例
- Socket编程中如何发送结构体,拼接多次接收消息及获取通信双方地址
- c/c++通过socket发送结构体
- 通过socket发送结构体
- [转载]c/c++通过socket发送结构体_林少油_新浪博客
- Socket 发送Send 长字符串(JSON转换得到) 字符串分割 分块发送
- 关于:无法执行值从 char 到 char 的隐性转换,因为该值的排序规则因排序规则冲突而未能解决
- Socket中send方法发送结构体和recv接受结构体
- 利用不定长的结构体发送socket数据
- 异常信息:CLR无法从COM 上下文0x645e18 转换为COM上下文0x645f88,这种状态已持续60秒。拥有目标上下文/单元的线程很有可能执行的是非泵式等待或者在不发送 Windows 消息的
- socket发送十六进制字符串 (十六进制字符串与其他类型的转换)
- socket发送与接收NSData,NSData与字符串和int的转换
- error C2664: strcpy : 不能将参数 2 从 CString 转换为 const char *;error C2440: “初始化”: 无法从“const wchar_t [15]”
- CLR 无法从 COM 上下文 0x1a2740 转换为 COM 上下文 0x1a28b0,这种状态已持续 60 秒。拥有目标上下文/单元的线程很有可能执行的是非泵式等待或者在不发送 Windows 消息的情况下处理一个运行时间非常长的操作