UDP开发时碰到的问题 UDP开发的Server和Client,奇怪的是他们都可以收到自己发出的消息,但是对他们之间的消息视而不见(或者根本没有这样的消息)。我用抓包的工具都没法抓到两端发出的消息。不知道怎么回事 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 没抓到过发送的UDP包不过在我的Server和Client端都是用RecvFrom()来接收消息的,并且可以接收到自己发出的消息 呵呵 IP对不对啊~ 哈哈~~-----------------------------------------------------------------------------------------------------------------------------------------CSDN小猪手:方便查看,快速回复~~速度++~~~下载:http://www.vickyjam.com/blog/lbs/article.asp?id=165 to Helppppppppppppppper(CSDN 小猪的手~http://www.vickyjam.com~~) : 什么IP?我的程序设这样写的:bool CInfoMana::setAddr(int port){ // 获取本机名 hostent* remoteHost; char LocalName[256]; int error; error=gethostname(LocalName, 256); // 获取本地 IP 地址 remoteHost = gethostbyname(LocalName); hostent& he = *remoteHost; sockaddr_in sa; CString strIpAddress; for (int nAdapter=0; he.h_addr_list[nAdapter]; nAdapter++) { memcpy ( &sa.sin_addr.s_addr, he.h_addr_list[nAdapter],he.h_length); } // 输出机器的IP地址. char* pIP=inet_ntoa(sa.sin_addr); CString s; s.Format("%s",pIP); strIpAddress=s; LocalAddr.sin_addr.s_addr=inet_addr(strIpAddress); LocalAddr.sin_family=AF_INET; LocalAddr.sin_port=htons(port); return true;}bool CInfoMana::setDAddr(CString addr,int port){ DesAddr.sin_addr.s_addr= inet_addr(addr); DesAddr.sin_family=AF_INET; DesAddr.sin_port=htons(port); return true;}.......BOOL CServerApp::InitInstance(){........... infomanager.setAddr(5000); infomanager.setDAddr("10.142.50.189",5000);//我的计算机ip infomanager.startup();......}这样我的程序就可以接收到它自己发出的信息,如果把setDAddr的第二个参数改成5001(就是我的Server在本机进行测试的端口),进行Server和Client之间的通讯就无法收到对方的信息,Server和Client的通信类是一样的,只不过端口不一样。 郁闷,果然是ip设置错了,T_T,问题已经解决了 我创建了一个对话框,对话框中又有两个属性页,现在需要在一个页的响应函数中获取另一页的句柄,不知该如何获得 CDateTimeCtrl下拉日历设置问题 我写的c工程,实现玻璃排版,运行报错啊,只写了initpop测试一下 _stdcal、_cdcal的问题 CoCreateInstance()传参的问题 DIRECTX中如何让摄像机绕于Y轴平行的轴转动 谁能找一下以前的一个帖子 勿忘国耻,警钟长鸣 CRecordset和CDatabase的问题? 下载的原代码,怎么生产.exe文件? 开线程问题 数据库问题?怎么得到表中一列里最大的数呢??
不过在我的Server和Client端都是用RecvFrom()来接收消息的,并且可以接收到自己发出的消息
CSDN小猪手:方便查看,快速回复~~速度++~~~
下载:
http://www.vickyjam.com/blog/lbs/article.asp?id=165
什么IP?我的程序设这样写的:
bool CInfoMana::setAddr(int port)
{
// 获取本机名
hostent* remoteHost;
char LocalName[256];
int error;
error=gethostname(LocalName, 256); // 获取本地 IP 地址
remoteHost = gethostbyname(LocalName);
hostent& he = *remoteHost;
sockaddr_in sa;
CString strIpAddress;
for (int nAdapter=0; he.h_addr_list[nAdapter]; nAdapter++)
{
memcpy ( &sa.sin_addr.s_addr, he.h_addr_list[nAdapter],he.h_length); }
// 输出机器的IP地址.
char* pIP=inet_ntoa(sa.sin_addr);
CString s;
s.Format("%s",pIP);
strIpAddress=s;
LocalAddr.sin_addr.s_addr=inet_addr(strIpAddress);
LocalAddr.sin_family=AF_INET;
LocalAddr.sin_port=htons(port);
return true;
}
bool CInfoMana::setDAddr(CString addr,int port)
{
DesAddr.sin_addr.s_addr= inet_addr(addr);
DesAddr.sin_family=AF_INET;
DesAddr.sin_port=htons(port);
return true;
}
.......
BOOL CServerApp::InitInstance()
{
...........
infomanager.setAddr(5000);
infomanager.setDAddr("10.142.50.189",5000);//我的计算机ip
infomanager.startup();
......
}
这样我的程序就可以接收到它自己发出的信息,如果把setDAddr的第二个参数改成5001(就是我的Server在本机进行测试的端口),进行Server和Client之间的通讯就无法收到对方的信息,Server和Client的通信类是一样的,只不过端口不一样。