关于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 ,一个内网的,一个外网的.
请问这是什么原因?
...全文
664 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
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打洞技术!

111,119

社区成员

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

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

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