C# socket tcpclient类库编程为什么我只能连在局域网和本机,不可以连广域网?

服务器:ip:IPAddressip=IPAddress.Parse("通过IP地址查询的带点本机广域网IP,例如154.23.40.111");:5050然后:try{... 服务器:
ip:IPAddress ip = IPAddress.Parse("通过IP地址查询的带点本机广域网IP,例如154.23.40.111");
:5050
然后:
try
{
tcplistener = new TcpListener(ip,port);
tcplistener.Start();
}
catch
{
listBox1.items.Add("失败");

return;
}

ThreadStart ts = new ThreadStart(Listenclientconnect);
Thread mythread = new Thread(ts);
mythread.Start();

这代码总是返回"失败",但是如果我把ip改成局域网或者本机,就会成功!!!
谢谢了
展开
 我来答
取券啦
2013-10-02 · TA获得超过107个赞
知道小有建树答主
回答量:174
采纳率:0%
帮助的人:156万
展开全部
tcpListener 是监听本地的tcp连接请求的。

你要连接别的机器,你用tcpclient去连。

对方机器开放的端口,并且有响应程序的,你链接才有效。

你可以自己模拟写一个监听的,再写一个请求的。自己连自己看看,你就知道怎么回事了。

具体逻辑是,client请求server端,server端的接收到请求后,做出响应。

这之间的对话,基本都是二进制流。
更多追问追答
追问
恩,我的程序没有问题,先用tcplistener监听,有请求了之后用tcpclient进行连接。我想说的是,如果在局域网里面运行没有问题,但是一旦我服务器的IP绑定的是广域网IP,服务器监听会抛异常。这是怎么回事,查了一下百度,说什么路由器映射之类的,这是什么意思,具体怎么操作?
追答
我首先不知道你抛出的是什么异常哦。

如果是路由的问题。

你在路由中将你监听的端口,开放到你这台主机的IP上。

或者最简单的是,将路由dmz设置为你这台主机,这样,你这台机器的所有端口就暴露在公网上了。
syht2000
高粉答主

2013-10-02 · 关注我不会让你失望
知道大有可为答主
回答量:3万
采纳率:79%
帮助的人:1.5亿
展开全部
你必须有公网地址才行(一般来说需要是电信用户),也就是说你在命令提示符下运行ipconfig /all看到的ip,要与你在ip138之类的网站查出来的ip要一致,否则是不行的,如果你两处是一样的,把你电脑的防火墙软件,以及电脑系统本身的防火墙都关掉看看。
追问
我打了ipconfig,结果是IPV6,是不是我一定要用IPV6格式才能连接?
我打了IPV6地址后还是无效!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ymj4645
2013-10-02 · TA获得超过3494个赞
知道小有建树答主
回答量:580
采纳率:37%
帮助的人:251万
展开全部
tcplistener = new TcpListener(ip,port);
监听本地套接字,作用在本地开启一个通讯端口,ip用于指定绑定的网卡地址!这个网卡当然必须你本地的主机网卡地址!
更多追问追答
追问
那怎么解决问题?
追答
……监听是服务器是事,自然传递本地的ip地址
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式