小弟在写一个IP多播的程序首先我把需要发送的数据封装在一个结构体中 typedef struct
{
char say[50];
char fname;
char lname;
int flag;
int info[400];
int check;
}MSG;
然后发送这个结构体,在接收端接收数据,并对数据进一步处理,响应接收的是调用下面这个函数
void CMyDialog::Receive()
{
MSG msg3;
int nAddrLen=sizeof(srcaddr);
int nRet=recvfrom(m_hGroupSocket,(char*)&msg3, sizeof(msg3),0,(sockaddr*)&srcaddr,&nAddrLen);//
m_showmsg.SetSel(-1, -1);//经论坛上高人指点实现在编辑框中自动滚动显示每条消息结构中的文字信息
CString strMsg((LPCTSTR)msg3.say);
strMsg+=_T("\r\n");
m_showmsg.ReplaceSel(strMsg);
}
我想把接收的数据中的字符串显示在编辑框控件中,多播组中每次发的信息其中包含的文字信息都显示在编辑框空间中,m_showmsg是编辑框控件的控制变量,上面想实现滚动条自动滚动。我是用VS2005编辑的程序,并且VS2005安装在虚拟机上。调试完后程序在虚拟机中运行时只能显示一条接收到消息结构体中的文字信息。当
再次发送不同信息结构体时编辑框中仍然只能显示第一次接收的文字信息。不能实现自动滚屏,而且只能显示一行。我把程序在笔记本的本机系统上运行时就能正确实现自动滚屏,对多个消息进行多行显示(就跟聊天室一样的效果)。
我把程序在一个台式机上(非虚拟机系统)重新编译运行时,结果跟在虚拟机中运行一样,只能显示一行信息,且不能滚屏。请问各位这是问什么呢?该如何解决啊 ,不可能写一个程序只能在自己电脑上运行啊。
{
char say[50];
char fname;
char lname;
int flag;
int info[400];
int check;
}MSG;
然后发送这个结构体,在接收端接收数据,并对数据进一步处理,响应接收的是调用下面这个函数
void CMyDialog::Receive()
{
MSG msg3;
int nAddrLen=sizeof(srcaddr);
int nRet=recvfrom(m_hGroupSocket,(char*)&msg3, sizeof(msg3),0,(sockaddr*)&srcaddr,&nAddrLen);//
m_showmsg.SetSel(-1, -1);//经论坛上高人指点实现在编辑框中自动滚动显示每条消息结构中的文字信息
CString strMsg((LPCTSTR)msg3.say);
strMsg+=_T("\r\n");
m_showmsg.ReplaceSel(strMsg);
}
我想把接收的数据中的字符串显示在编辑框控件中,多播组中每次发的信息其中包含的文字信息都显示在编辑框空间中,m_showmsg是编辑框控件的控制变量,上面想实现滚动条自动滚动。我是用VS2005编辑的程序,并且VS2005安装在虚拟机上。调试完后程序在虚拟机中运行时只能显示一条接收到消息结构体中的文字信息。当
再次发送不同信息结构体时编辑框中仍然只能显示第一次接收的文字信息。不能实现自动滚屏,而且只能显示一行。我把程序在笔记本的本机系统上运行时就能正确实现自动滚屏,对多个消息进行多行显示(就跟聊天室一样的效果)。
我把程序在一个台式机上(非虚拟机系统)重新编译运行时,结果跟在虚拟机中运行一样,只能显示一行信息,且不能滚屏。请问各位这是问什么呢?该如何解决啊 ,不可能写一个程序只能在自己电脑上运行啊。
m_showmsg.SetSel(nLength, nLength);
strMsg+=_T("\r\n");
m_showmsg.ReplaceSel(strMsg");
2.断点判断MSG中的内容接收是否正确
你的工程编码是不是多字节的?
在Receive函数上面打个断点很容易发现是没有接收到数据....
(LPSOCKADDR)&srcaddr, sizeof(SOCKADDR));
上面是发送函数请问是srcaddr这个地址参数有问题吗?我改了半天也没弄明白,能提示一下吗,麻烦您了