网络编程:"在其上下文中,该请求的地址无效。" ErrorCode:10049

enterFool 2009-12-15 04:03:37
情况描述:
  自己开发的一套局域网聊天程序,有服务端和客户端,服务端处理所有客户端的连接,用户的上下线,用户的非正常退出等等。开发完后在自己公司的局域网环境中测试正常。但来到客户这里后,客户端连接不上了。异常信息如下:
System.Net.Sockets.SocketException: 在其上下文中,该请求的地址无效
ErrorCode: 10049
Message: 在其上下文中,该请求的地址无效
SocketErrorCode: System.Net.Sockets.SocketError.AddressNotAvailable

在公司测试的时候都是内网IP,192.168.1.*, 子网掩码: 255.255.255.0
客户这里的内网要复杂一些, 服务器IP: 10.139.159.8 子网掩码: 255.255.255.240 网关: 10.139.159.14
我在做测试的电脑IP地址又不一样, IP: 10.139.159.177 子网掩码: 255.255.255.128 网关: 10.139.159.254

如果我把服务器挂在同一个子网下, 就是子网掩码都是255.255.255.128的环境下, 我的程序可以正常运做. 个人感觉可能跟子网掩码的网段分割有关系.

补充两点, 服务器的TCP/IP筛选已关闭, 防火墙已关闭, 防火墙的例外规则已添加, 我用的是8000端口, 所以添加了2个规则, 端口8000和我的服务端. 服务端安装的是卡巴斯基杀毒软件, 在停掉的情况下测试过, 也连不上.

报错代码如下:

try
{
IPEndPoint ipPoint = new IPEndPoint(ipRemote, int.Parse(HostPort));
//调试到这里一切正常,IP地址和端口都没有错误
TcpClient tcpClient = new TcpClient(ipPoint);
nStream = tcpClient.GetStream();  
//就是上面这行报错
swWriter = new StreamWriter(nStream, Encoding.Default);   
tcpConnect = true;
}
catch (Exception ee)
{
MessageBox.Show(ee.Message, "PmsMessage", MessageBoxButtons.OK, MessageBoxIcon.Error);
isExit = true;
Application.Exit();
}
...全文
7714 21 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
enterFool 2009-12-21
  • 打赏
  • 举报
回复
我的情况和你说的有些像 不过请你说详细一些 比如 为什么找不到这个IP 如何处理才能找到。谢谢。
wxxloveu 2009-12-21
  • 打赏
  • 举报
回复
我解决办法就是用本机的IP绑定
wxxloveu 2009-12-21
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 enterfool 的回复:]
我的情况和你说的有些像 不过请你说详细一些 比如 为什么找不到这个IP 如何处理才能找到。谢谢。
[/Quote]
我觉得你应该不是我这个问题,我的问题是我取的地址不是我本机的地址,所以报错。
wxxloveu 2009-12-19
  • 打赏
  • 举报
回复
我的错误System.Net.Sockets.SocketException: 在其上下文中,该请求的地址无效。
10049
在 System.Net.Sockets.Socket.DoBind(EndPoint endPointSnapshot, SocketAddress socketAddress)
在 System.Net.Sockets.Socket.Bind(EndPoint localEP)
在 System.Net.Sockets.UdpClient..ctor(IPEndPoint localEP)
我这个错误比较简单,请求的IP地址在你的机子上找不到。也就是说 在绑定IP地址的时候,此IP不在你的机子上
解决的办法,处理好IP就可以了
enterFool 2009-12-18
  • 打赏
  • 举报
回复
再顶
enterFool 2009-12-16
  • 打赏
  • 举报
回复 1
[Quote=引用 15 楼 linux7985 的回复:]
是他们自己的网络,不同网段之间的路由没有配置好!
[/Quote]

那再请问应该如何改正呢
烈火蜓蜻 2009-12-15
  • 打赏
  • 举报
回复
是他们自己的网络,不同网段之间的路由没有配置好!
enterFool 2009-12-15
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 vrhero 的回复:]
看看ipRemote的地址和掩码对不对...一步一步仔细检查,这个异常和你这段代码没直接关系...
[/Quote]

ipRemote的掩码?你是指ipRemote也要设置掩码么。如何设置?
vrhero 2009-12-15
  • 打赏
  • 举报
回复
看看ipRemote的地址和掩码对不对...一步一步仔细检查,这个异常和你这段代码没直接关系...
enterFool 2009-12-15
  • 打赏
  • 举报
回复
upup。高手现身啊。
enterFool 2009-12-15
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 vrhero 的回复:]
ipRemote是怎么定义的?
[/Quote]


IPAddress ipRemote;
try
{
ipRemote = IPAddress.Parse(HostIP);
}


HostIP是个公共变量,从其他窗口传过来。
再重申一次,IP地址和端口我在调试时仔细检查过,没有问题。
vrhero 2009-12-15
  • 打赏
  • 举报
回复
ipRemote是怎么定义的?
enterFool 2009-12-15
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 wjy217213 的回复:]
把程序改成自动获取IP的多好呀
[/Quote]
如果可能的话以后会考虑 不过现在已经到了客户这里而且是验收阶段。肯定来不及了。
wjy217213 2009-12-15
  • 打赏
  • 举报
回复
把程序改成自动获取IP的多好呀
enterFool 2009-12-15
  • 打赏
  • 举报
回复
急。。。请高手帮忙。
lwb5151 2009-12-15
  • 打赏
  • 举报
回复
路过。。。Up
enterFool 2009-12-15
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 lianshaohua 的回复:]
端口没有被其它的程序占用?你确定没有被占用?换一个端口试试吧;
[/Quote]

确定没有被占用。因为我在服务器上直接使用客户端是OK的。
ztenv 2009-12-15
  • 打赏
  • 举报
回复
端口没有被其它的程序占用?你确定没有被占用?换一个端口试试吧;
enterFool 2009-12-15
  • 打赏
  • 举报
回复
能够PING通。用户的防火墙上我添加了例外,端口号8000。但问题是别人的防火墙一直就没开过。
调试的时候我也认真查看了,IP地址和端口都没写错。
jzm0401 2009-12-15
  • 打赏
  • 举报
回复
学习了,帮顶.
加载更多回复(1)

111,092

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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