udp局域网聊天程序,基本完成,有2处不明白,希望大家指点

devspace 2004-01-01 05:04:42

如题,问题描述在NetBrocastDlg.cpp的ReceiveMessageAndShow函数中(即接收udp数据报的线程函数)描述的很清晰,希望大家能帮帮忙,100分以谢,问题不难~

这是代码和程序地址:http://tasm.51.net/question/NetBrocast.rar




另祝大家新年快乐
...全文
55 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
howtotell 2004-01-01
  • 打赏
  • 举报
回复
void CNetBrocastDlg::OnSend()
{
// TODO: Add your control notification handler code here
UpdateData();
CString ip_from_control;//取得要投递消息的地址
CComboBox* pCB=(CComboBox*)GetDlgItem(IDC_COMBO_IP);
pCB->GetWindowText(ip_from_control);


//发送消息代码
if( m_the_send_data != "" )
{
//下面发送消息,是否要在程序开始创建套接字?
SOCKET s;
sockaddr_in addrto;
WSADATA wsdata;
BOOL bsocket;
CString smsg;
if(ip_from_control=="")
{
MessageBox("必须指定发送地址","错误",MB_ICONSTOP);
return;
}
else if(ip_from_control=="所有人")
{
CString m_addrBroadCast=m_myIP;
int len=m_addrBroadCast.ReverseFind('.');
m_addrBroadCast.Delete(len,m_addrBroadCast.GetLength()-len);
m_addrBroadCast+=".255";
ip_from_control=m_addrBroadCast;
smsg=m_computername + " 对 "+"所有人"+"说:"+m_the_send_data;
}
else
{
smsg=m_computername + " 对 "+ip_from_control+"说:"+m_the_send_data;
}

//启动SOCKET库,版本为2.0
WSAStartup(0x0202,&wsdata);

s=WSASocket(AF_INET,SOCK_DGRAM,0,NULL,0,WSA_FLAG_OVERLAPPED);
bsocket=TRUE;
//然后赋值给地址,用来从网络上的广播地址接收消息;
addrto.sin_family=AF_INET;
addrto.sin_addr.s_addr=inet_addr(ip_from_control);//INADDR_BROADCAST;
addrto.sin_port=htons(m_send_port);
bool opt=true;
//设置该套接字为广播类型,
setsockopt(s,SOL_SOCKET,SO_BROADCAST,(char FAR *)&opt,sizeof(opt));
int nlen=sizeof(addrto);


//从广播地址发送消息
int ret=sendto(s,smsg,256,0,(sockaddr*)&addrto,nlen);
if(ret==SOCKET_ERROR)
MessageBox("send error");
else
{
//MessageBox("ok");
}
//关闭套接字
}
else
{
AfxMessageBox( " 不能发空消息 " );
}
WSACleanup();
//清空发送文本框
g_dlg->m_the_send_data="青山不改,绿水长流,咱们后会有期";
UpdateData(FALSE);
//文本框设为焦点
CEdit* pToEdit=(CEdit *)GetDlgItem(IDC_EDIT_SEND);
pToEdit->SetFocus();

}
sharkhuang 2004-01-01
  • 打赏
  • 举报
回复
ding
devspace 2004-01-01
  • 打赏
  • 举报
回复
第2个问题搞定了,剩下第一个:
为什么本机上发送一个udp数据报,网络上的收到一个消息,而本机却收到了3个?
大家帮忙看看代码
Jasonn 2004-01-01
  • 打赏
  • 举报
回复
UPUPUPUPUPUPUPUPUPUPUPUP
UPUPUPUPUPUPUPUPUPUPUPUP
UPUPUPUPUPUPUPUPUPUPUPUP
UPUPUPUPUPUPUPUPUPUPUPUP
UPUPUPUPUPUPUPUPUPUPUPUP
UPUPUPUPUPUPUPUPUPUPUPUP
RomanticProgrammer 2004-01-01
  • 打赏
  • 举报
回复
up
sboom 2004-01-01
  • 打赏
  • 举报
回复
贴到这里来。

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧