关于Socket的问题:由于目标机器积极拒绝,无法连接

wei023 2006-04-21 06:41:10
服务器端:
Socket mysocket;
TcpListener tcplistener = new TcpListener(6666);
tcplistener.Start();
StreamReader sReader;
mysocket = tcplistener.AcceptSocket();
NetworkStream myStream = new NetworkStream(mysocket);
sReader = new StreamReader(myStream);
MessageBox.Show(sReader.ReadLine());
tcplistener.Stop();
myStream.Close();
sReader.Close();

客户端:
TcpClient tcCli = new TcpClient("222.81.188.124",6666);
NetworkStream ns = tcCli.GetStream();
StreamWriter sw;
sw = new StreamWriter(ns);
sw.Write("aaa");
sw.Close();
ns.Close();
tcCli.Close();

运行时出现:由于目标机器积极拒绝,无法连接

但是IP如果换成内网的(192.168.0.6)就可以.
我机子有两个IP ,一个内网的,一个外网的.
请问这是什么原因?
...全文
568 6 点赞 打赏 收藏 举报
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
wei023 2006-05-24
解决了,给分,谢谢大家 !!
  • 打赏
  • 举报
回复
shao 2006-04-27
使用这个构造函数:
public TcpListener(
IPAddress localaddr,
int port
);
把localaddr设成:222.81.188.124
  • 打赏
  • 举报
回复
任亚军 2006-04-27
不是这样的
TcpListener tcplistener = new TcpListener(6666);
服务端在建立监听的时候,默认的采用了服务器本地地址.假如这个本地地址有几个的时候,他自动选择的是第1个
这个可以通过
IPHostEntry ipHostInfo = Dns.Resolve(Dns.GetHostName());
IPAddress ipAddress = ipHostInfo.AddressList[0];
IPEndPoint localEndPoint = new IPEndPoint(ipAddress, this.port);
里面的AddressList[0]看出来
[0]是第1个,你可以换成其他的
  • 打赏
  • 举报
回复
wei023 2006-04-21
yunajie() :那样不行,因为我只写客户端,服务器端是已用JAVA写好的,只能改客户端
  • 打赏
  • 举报
回复
wei023 2006-04-21
没有其它的办法了吗?
  • 打赏
  • 举报
回复
yunajie 2006-04-21
很明显嘛!穿不透防火墙了!
可以参考一下UDP打洞技术!
  • 打赏
  • 举报
回复
相关推荐
发帖
C#
加入

10.6w+

社区成员

.NET技术 C#
申请成为版主
帖子事件
创建了帖子
2006-04-21 06:41
社区公告

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