9 个解决方案
#1
简单的用telnet ip port,写一个批处理就可以了
要在VC中编程实现就用 tcp socket,connect端口,wsagetlasterror(),设置为非堵塞模式就可以了
要在VC中编程实现就用 tcp socket,connect端口,wsagetlasterror(),设置为非堵塞模式就可以了
#2
CAsyncSocket m_sock;
//...
m_sock.Create();
if( m_sock.Connect(mReader[i].m_strIP,9898) )
{
成功;
}
else{
失败;
}
全部进入了 失败 中了,可是有些IP和端口确实是有用的,我用window media输入IP和端口都能播放(就是说该IP和端口可用)
//...
m_sock.Create();
if( m_sock.Connect(mReader[i].m_strIP,9898) )
{
成功;
}
else{
失败;
}
全部进入了 失败 中了,可是有些IP和端口确实是有用的,我用window media输入IP和端口都能播放(就是说该IP和端口可用)
#3
在你调试程序前,建议你telnet ip 9898看是否能连接,
观察以下情况
1。正常连接上,可以通过键盘发出数据
2。正常连接上,但立刻被remote主机中断
3。连接不上。说明端口确实不可用
仅仅判断返回值,是不足以确定的
m_sock.Create();
if( m_sock.Connect(mReader[i].m_strIP,9898) )
{
成功;
}
else{
int errorcode=GetLastErro();
if (errorcode==WSAEWOULDBLOCK)
{
//当socket是非堵塞的,那么会有OnConnect消息被相应,在这个消息响应函数里你可以确定是否连接上,然后再断开,去连接下一个IP和端口,不要直接循环
}
else
{
// 失败;建议这里取得errorcode来判断具体的代码
}
}
观察以下情况
1。正常连接上,可以通过键盘发出数据
2。正常连接上,但立刻被remote主机中断
3。连接不上。说明端口确实不可用
仅仅判断返回值,是不足以确定的
m_sock.Create();
if( m_sock.Connect(mReader[i].m_strIP,9898) )
{
成功;
}
else{
int errorcode=GetLastErro();
if (errorcode==WSAEWOULDBLOCK)
{
//当socket是非堵塞的,那么会有OnConnect消息被相应,在这个消息响应函数里你可以确定是否连接上,然后再断开,去连接下一个IP和端口,不要直接循环
}
else
{
// 失败;建议这里取得errorcode来判断具体的代码
}
}
#4
m_sock.Connect(mReader[i].m_strIP,9898)为假
可是该IP和端口确实是可用的啊,该IP在线.
该IP不运行任何socket程序
可是该IP和端口确实是可用的啊,该IP在线.
该IP不运行任何socket程序
#5
因为你该IP没有绑定服务器,你的对端机器不是服务器。你本机只是客户端。肯定连不上
#6
remote ip 远端主机如果没有在这个IP和端口上进行监听,何来可用,所谓IP在线,只是你用ping发icmp包,与端口无关
#7
用程序怎么发icmp包?
#8
socket (AF_INET,SOCK_RAW,IPPROTO_ICMP);
指定套接字为原始套接字,和ICMP协议,然后按照ICMP协议封包,sendto,
你可以搜索一下。类似代码很多的
指定套接字为原始套接字,和ICMP协议,然后按照ICMP协议封包,sendto,
你可以搜索一下。类似代码很多的
#9
我找了
http://www.codeproject.com/internet/winping.asp
看了下,
但是不知道怎么测试端口啊
http://www.codeproject.com/internet/winping.asp
看了下,
但是不知道怎么测试端口啊
#1
简单的用telnet ip port,写一个批处理就可以了
要在VC中编程实现就用 tcp socket,connect端口,wsagetlasterror(),设置为非堵塞模式就可以了
要在VC中编程实现就用 tcp socket,connect端口,wsagetlasterror(),设置为非堵塞模式就可以了
#2
CAsyncSocket m_sock;
//...
m_sock.Create();
if( m_sock.Connect(mReader[i].m_strIP,9898) )
{
成功;
}
else{
失败;
}
全部进入了 失败 中了,可是有些IP和端口确实是有用的,我用window media输入IP和端口都能播放(就是说该IP和端口可用)
//...
m_sock.Create();
if( m_sock.Connect(mReader[i].m_strIP,9898) )
{
成功;
}
else{
失败;
}
全部进入了 失败 中了,可是有些IP和端口确实是有用的,我用window media输入IP和端口都能播放(就是说该IP和端口可用)
#3
在你调试程序前,建议你telnet ip 9898看是否能连接,
观察以下情况
1。正常连接上,可以通过键盘发出数据
2。正常连接上,但立刻被remote主机中断
3。连接不上。说明端口确实不可用
仅仅判断返回值,是不足以确定的
m_sock.Create();
if( m_sock.Connect(mReader[i].m_strIP,9898) )
{
成功;
}
else{
int errorcode=GetLastErro();
if (errorcode==WSAEWOULDBLOCK)
{
//当socket是非堵塞的,那么会有OnConnect消息被相应,在这个消息响应函数里你可以确定是否连接上,然后再断开,去连接下一个IP和端口,不要直接循环
}
else
{
// 失败;建议这里取得errorcode来判断具体的代码
}
}
观察以下情况
1。正常连接上,可以通过键盘发出数据
2。正常连接上,但立刻被remote主机中断
3。连接不上。说明端口确实不可用
仅仅判断返回值,是不足以确定的
m_sock.Create();
if( m_sock.Connect(mReader[i].m_strIP,9898) )
{
成功;
}
else{
int errorcode=GetLastErro();
if (errorcode==WSAEWOULDBLOCK)
{
//当socket是非堵塞的,那么会有OnConnect消息被相应,在这个消息响应函数里你可以确定是否连接上,然后再断开,去连接下一个IP和端口,不要直接循环
}
else
{
// 失败;建议这里取得errorcode来判断具体的代码
}
}
#4
m_sock.Connect(mReader[i].m_strIP,9898)为假
可是该IP和端口确实是可用的啊,该IP在线.
该IP不运行任何socket程序
可是该IP和端口确实是可用的啊,该IP在线.
该IP不运行任何socket程序
#5
因为你该IP没有绑定服务器,你的对端机器不是服务器。你本机只是客户端。肯定连不上
#6
remote ip 远端主机如果没有在这个IP和端口上进行监听,何来可用,所谓IP在线,只是你用ping发icmp包,与端口无关
#7
用程序怎么发icmp包?
#8
socket (AF_INET,SOCK_RAW,IPPROTO_ICMP);
指定套接字为原始套接字,和ICMP协议,然后按照ICMP协议封包,sendto,
你可以搜索一下。类似代码很多的
指定套接字为原始套接字,和ICMP协议,然后按照ICMP协议封包,sendto,
你可以搜索一下。类似代码很多的
#9
我找了
http://www.codeproject.com/internet/winping.asp
看了下,
但是不知道怎么测试端口啊
http://www.codeproject.com/internet/winping.asp
看了下,
但是不知道怎么测试端口啊