社区
网络编程
帖子详情
关于DHCP动态分配IP地址情况下的网络编程
volcary
2003-09-05 11:29:08
写了一个网络程序,结果发现在客户端是动态分配IP的情况下,有时会出现客户端掉线的情况,重新连接后客户端无法连接上服务器了。有问题如下。
1.在9x/2000下动态分配IP是如何工作的,当有一个TCP连接存在的时候,机器的IP会动态改变么。
2. 动态分配的IP在什么情况下才会发生变化
3. 如果用户的IP不是启动后分配一次就不变,那么象其他网络程序是如何适应这种情况的
...全文
212
14
打赏
收藏
关于DHCP动态分配IP地址情况下的网络编程
写了一个网络程序,结果发现在客户端是动态分配IP的情况下,有时会出现客户端掉线的情况,重新连接后客户端无法连接上服务器了。有问题如下。 1.在9x/2000下动态分配IP是如何工作的,当有一个TCP连接存在的时候,机器的IP会动态改变么。 2. 动态分配的IP在什么情况下才会发生变化 3. 如果用户的IP不是启动后分配一次就不变,那么象其他网络程序是如何适应这种情况的
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
footway
2003-10-12
打赏
举报
回复
自制代码共享!!调用GetHostIpAddr( )函数把当前计算机上的所有IP地址读出来,再看看哪个是你想要的。GetHostIPAddrByName( )函数则可以读取网络上任何一台计算机的IP地址,只要你知道该计算机的名称、域名(比如www.163.com)等。
long GetHostIPAddr( unsigned long *lpNetIP, unsigned long IPIndex )
{
char HostName[128] = {0};
if ( ::gethostname( HostName, 127 ) != 0 ) {
::OutputDebugString( "Get host's name fail!\r\n" );
return -1;
}
return GetHostIPAddrByName( lpNetIP, HostName, IPIndex );
}
long GetHostIPAddrByName( unsigned long *lpNetIP,
const CHAR *lpStrName, unsigned long IPIndex )
{
unsigned long *pTemp = NULL;
hostent *Host;
unsigned long Index = 0;
assert( lpNetIP != NULL );
assert( lpStrName != NULL );
Host = ::gethostbyname( lpStrName );
if ( Host == NULL )
{
::OutputDebugString( "Get Host's address by name fail!\r\n" );
return -1;
}
Index = 0;
while( 1 )
{
pTemp = (unsigned long *)(Host->h_addr_list[Index]);
if ( pTemp == NULL )
{
::OutputDebugString( "The IPIndex is too large!\r\n" );
return -1;
}
else if ( Index == IPIndex )
{
*lpNetIP = *((unsigned long *)pTemp);
return 0;
}
else
{
Index++;
}
}
return -1;
}
volcary
2003-10-09
打赏
举报
回复
在程序中使用了25009端口 结果发现这个端口 是 “25009,icl-twobase10,icl-twobase10 ”
icl-twobase10 是什么意思,谁能解释一下,有时扫描该端口不成功导致掉线是否和它有关系
Carapee
2003-09-17
打赏
举报
回复
你的机器和DHCP服务器之间是不是有防火墙?
Carapee
2003-09-17
打赏
举报
回复
开一个线程,用这个函数监控地址的变化,如果变化了,删除并更新你的客户端连接。
NotifyAddrChange
volcary
2003-09-16
打赏
举报
回复
up
volcary
2003-09-12
打赏
举报
回复
实际上程序在固定IP的情况下都是正常的,但在DHCP情况下则出问题,一般DHCP正常配置的情况下是不会出现IP变化的,那么怎么样子的配置会导致这种IP短时间内就会发生变化呢,在机器很多的情况下
gjd111686
2003-09-11
打赏
举报
回复
服务器侦听多个Socket为空值时加载虚函数指向自定义的函数处理
你是客户端掉线不是网络掉线所以客户端IP不会变,而且这中应用跟客户IP无关
只跟服务器IP有关系.
所以你程序的Bug跟网络环境无关,你的服务器应该有CListenSocket和CClientSocket两个派生类,你判断CClientSocket是否为空处理应该没有问题
volcary
2003-09-11
打赏
举报
回复
:gjd111686
能否详细说明一下,你认为问题是没有delete旧的socket么,可是这种close是怎么发生的
gjd111686
2003-09-09
打赏
举报
回复
你的服务器程序在CSocket::OnClose()中清理Socket就可以了
volcary
2003-09-08
打赏
举报
回复
这个问题没人感兴趣么,谈一些相关的知识也可以,都会给分的
DarkShow
2003-09-08
打赏
举报
回复
1、不会变化
2、如果IP要变化,除非你自己release或者DHCP服务器重启,或者DHCP服务器释放掉你的IP给你重新分配。
3、比如花生壳软件,就是利用固定的域名来解决动态IP的问题。其实每次机器启动,都将IP汇报到服务器,然后服务器重新将新IP绑定到域名上。就完成了动态IP固定域名的工作。每次寻找,只需要输入域名即可,不必管IP是多少。
bubble222
2003-09-08
打赏
举报
回复
不懂
wkgenius
2003-09-05
打赏
举报
回复
当主机的IP配置设为“自动获取一个IP”,并且网内存在一个DHCP服务器的时候,主机会自动获取一个有DHCP服务器分配的IP。
DHCP服务器的IP分配存在一个“租期”的概念,在租期之内,IP不会改变。
具体的情况比较复杂,这里说不明白,建议你看一下:
《用TCP/IP进行网际互联 第一卷:原理、协议与结构》,非常好的讲TCP/IP的书。
volcary
2003-09-05
打赏
举报
回复
希望有熟悉这方面知识的人能讲解一下,应当不难吧,看书的话谁都知道,最好说点实质的,
关于租期的情况,具体是怎样的呢,资料上讲大约是八天的时间,可是从我的程序反映来看
好象几小时间内就发生了,IP变化的情况(连接中断了),从理论上是否不可能呢,还有DHCP
服务器的不当陪置是否会导致如此,怎样的配置会产生这样的效果。
请多指教
DHCP
动态主机配置服务(在Linux环境下,配置单网段或跨网段提)
Re:
DHCP
动态主机配置服务 (在Linux环境下,配置单网段或跨网段提供服务) ====================================
DHCP
服务是企业中最常用的服务之一,例如在网段中的主机需要与其它...
DHCP
自动分配IP命令配置
DHCP
自动分配IP命令配置
DHCP
和PXE:单片机实现
IP地址
的生成
如果客户端没有发送client ID,则
DHCP
服务器会根据客户端的MAC地址来生成一个唯一的标识符,并使用该标识符来分配一个
IP地址
。在网络通信中,
IP地址
是非常重要的,而在
DHCP
和PXE协议中,
IP地址
是如何生成的呢?
DHCP
...
STM32F1
网络编程
-W5500-动态获取IP(
DHCP
)
在前面的文章中,我们成功将W5500的驱动成功移植,并以静态方式配置W5500的IP。本文在前面文章介绍内容的基础上,详细介绍如何配置W5500动态获取IP,即
DHCP
方式分配IP。
Windows
DHCP
Server基于MAC地址过滤客户端请求实现
IP地址
的分配
企业中,为了降低管理员对于
IP地址
管理、分配的复杂繁琐性,很多企业都会架设Windows
DHCP
服务器,通过
DHCP
服务器为企业中的客户端自动分配
IP地址
。 但是面对现代如此庞大数量的客户端PC、手机、平板等,也导致...
网络编程
18,356
社区成员
64,214
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章