不过现在问题是这样的。在中,我发送的结构是这样的:struct send
{
unsigned long len ; //包长
char *data ; //数据
}我发过去,总是有包长,而没有数据,为什么??
{
unsigned long len ; //包长
char *data ; //数据
}我发过去,总是有包长,而没有数据,为什么??
解决方案 »
- 对话框一步步实现向导,如何做?
- 急急 请教 如何在CFormView里添加MEDIA PLAY 控件啊
- vc.net 2003中,如果包含的路径下有两个同名文件,如何指定用到的是哪一个?还有,如何查出各包含路径下是否有同名文件?
- 请想要c#程序的网友进来看看
- 关于Runtime Error问题,急!!请教各位高高手 在线等待!
- 为什么我读CMOS端口关于时,分,秒和显示的系统时间不一样呢?
- 请教各位大侠关于dll文件合并的问题,解决立即结帐
- 请问宏 AC_SRC_ALPHA 的值是多少?
- 终于碰到传闻中的VC最强BUG了
- Activex插件加载失败
- 该用什么方法移动系统键盘光标?
- VC++设置存储的路径
{
unsigned long len ; //包长
char *data ; //数据
}我发过去,总是有包长,而没有数据,为什么??
then the value of i is the length of the string include the null charater.
size_t _mbstrlen( const char *string );
应该这样定义结构才可以:
struct send
{
unsigned long len ; //包长
char szData[MAX_LENGTH]; //数据
}
char * pBuf=new char[nLen];
*(unsigned long)pBuf=send.len;
memcpy(pBuf+sizeof(long),send.data,strlen(send.data);Send(pBuf,nLen);delete [] pBuf;
如果用
char szData[MAX_LENGTH]这样会台浪费空间,
后者你可以将它定义成一个类,自己处理发送问题。
{
long len;
char *data ;
}然后我用 CAsyncSocket 发送
sock.Send(&snd,len )接收那就是 Receive(&snd,len);结果就是收不到 data 里的数据。
结构中不能用指针,用char tText[1024]
would get the len.
please use receive(,,,)or recv(,,,) ok .just do it.
结构中可以用指针,但需要先分配再用,而且结构的长度不固定了。
结构的长度总是固定的,要不然编译器怎么分配内存?指针变量总是4bytes.
typedef struct tagBITMAPINFO {
BITMAPINFOHEADER bmiHeader;
RGBQUAD bmiColors[1];
} BITMAPINFO;你说BITMAPINFO长度多少????
bmiColors能不能做指针????
你搞错了。
我写的结构是微软定义的位图信息头结构,怎么会写错呢???
你可以先看看相关msdn再说
sizeof(BITMAPINFO)是不能用的,你学的是书本上的数据结构
http://www.csdn.net/expert/topic/579/579161.xml?temp=.367779你的结构里是一个指针,指针指向的内存可能在别的地方, 不一定就跟在结构指针后面。看你前面的程序,好像仅仅是将结构里包含的数据发送,应该可以这样写: send(snd.data, snd.len);如果要将整个结构发送,你需要把结构手动整合成一块内存。