由于目标计算机积极拒绝,无法连接。 127.0.0.1:8888

lkang08 2011-06-19 10:37:42
下载了个c#版的p2p聊天工具,调试时出现“由于目标计算机积极拒绝,无法连接。 127.0.0.1:8888”错误提示,请问高手这如何解决。
ps:防火墙我关闭了,端口号也测试了几个,都是大于1000的,不过都出现这个错误
我是刚接触网络编程,现在课程设计需要用到,所以想找个例子学习一下。
资源我重新上传了(我不知道我在哪下载的了,只好重新上传)
http://download.csdn.net/source/3377954
...全文
240324 19 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
jarraytan 2013-10-09
  • 打赏
  • 举报
回复 1
我今天也发现这个问题了,最终发现: 如果服务器启动监听时监听的地址不是127.0.0.1,而是192.168.0.1,那么直接连接127.0.0.1会被拒绝,连接192.168.0.1才会成功。 楼上sp1234的说法正确,服务器应该监听IPAddress.Any,也就是0.0.0.0,那么通杀所有ip连接
ajing01516 2012-05-17
  • 打赏
  • 举报
回复
检查服务端是否在运行
CNCaiNiao 2011-10-03
  • 打赏
  • 举报
回复
冷大虾,你上在哪里了?
CNCaiNiao 2011-10-03
  • 打赏
  • 举报
回复
System.Net.WebException: 无法连接到远程服务器 ---> System.Net.Sockets.SocketException: 由于目标计算机积极拒绝,无法连接。 127.0.0.1:80
在 System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)
在 System.Net.Sockets.Socket.InternalConnect(EndPoint remoteEP)
在 System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Int32 timeout, Exception& exception)
--- 内部异常堆栈跟踪的结尾 ---
在 System.Net.HttpWebRequest.GetRequestStream(TransportContext& context)
在 System.Net.HttpWebRequest.GetRequestStream()
在 System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
lengwuqin 2011-06-20
  • 打赏
  • 举报
回复
我最近也做了一个局域网聊天程序,当服务器端没有开启服务时,就会出现你那种情况,应该是服务器没有开启,我估计,你那个程序的服务器端是在8888端口上监听。我应经把我做的程序(C#写的)上传上去了,你自己下载看看,应该对你有帮助,有任何疑问可按里面的联系方式联系。
meic1985 2011-06-20
  • 打赏
  • 举报
回复
正准备学习一下
lkang08 2011-06-19
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 sp1234 的回复:]

大规模的测试,产品化的测试,这是必需的。不要相信仅仅是为了掩饰一个特别方法随便写的所谓范例。即使是msdn上的通讯范例,大多数也是非产品化的。因为它如果按照产品设计必须有的要素来设计,初学者反而会“看不懂”。这就是一个现实矛盾。
[/Quote]
有道理。我现在是初涉网络编程,就是想找个好点的例子学习一下
lkang08 2011-06-19
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 mafangming 的回复:]

引用 5 楼 lkang08 的回复:

引用 2 楼 btxp163 的回复:

在运行中输入cmd ,然后用 netstat -an 看下有没有8888这个端口?

至少可以看是不是被占用了
端口没被占用,我换了很多个端口还是不行


这个8888应该是服务端的监听端口,如果netstat看不到的话肯定是会发生lz你所说的问题的。你应该还要启动这个服务端才对。
[/Quote]服务器应该害是启动了的,服务器的ip是本机ip,端口号时一个随机可用的值。这是我的理解。
我把监听的代码贴上来,在程序加载方法里调用
ThreadStart myThreadStartDelegate = new ThreadStart(Listensing);

//创建一个用于监听的线程对象,通过代理执行线程中的方法

myThread = new Thread(myThreadStartDelegate);
//启动线程
myThread.Start();

一下是监听方法
 private void Listensing()
{
Socket socket = null;
//获取本机上第一个可用的IP地址

myIPAddress = (IPAddress)Dns.GetHostAddresses(Dns.GetHostName()).GetValue(0);
Random r = new Random();
while (true)
{
try
{
//随机产生一个0~65535之间的端口号
myPort = r.Next(65535);
//myPort = 8888;
//创建TcpListener对象,在本机的IP和Port端口监听连接到该IP和端口的请求
tcpListener = new TcpListener(myIPAddress, myPort);
//开始监听,如果不出现异常,则说明IP地址和端口号可用
tcpListener.Start();
//显示IP地址和端口
ShowLocalIPAndPort();
//在信息窗口显示成功信息
ShowMyMessage(string.Format("尝试用端口{0}监听成功", myPort));
ShowMyMessage(string.Format("<message>[{0}]{1:h点m分s秒}开始在端口{2}监听与本机的连接", myIPAddress, DateTime.Now, myPort));
break;
}
catch
{
//继续while循环,以便随机找下一个可用端口号,同时显示失败信息
ShowMyMessage(string.Format("尝试用端口{0}监听失败", myPort));
}
}
while (true)
{
try
{
//使用阻塞方式接受客户端连接,根据连接信息创建Tcpclient对象
//注意:AcceptSocket接受到新的连接请求才会继续执行其后的语句
socket = tcpListener.AcceptSocket();
//如果往下执行,说明已经根据客户端连接请求创建了套接字
//使用创建的套接字接受客户端发送的信息
NetworkStream stream = new NetworkStream(socket);
StreamReader sr = new StreamReader(stream);
string recieveMessage = sr.ReadLine();
int i1 = recieveMessage.IndexOf(",");
int i2 = recieveMessage.IndexOf(",", i1 + 1);
int i3 = recieveMessage.IndexOf(",", i2 + 1);
string ipString = recieveMessage.Substring(0, i1);
string portString = recieveMessage.Substring(i1 + 1, i2 - i1 - 1);
string messageTypeString = recieveMessage.Substring(i2 + 1, i3 - i2 - 1);
string messageString = recieveMessage.Substring(i3 + 1);
ShowMyMessage(ipString, portString, messageTypeString, messageString);
}
catch
{
//通过停止TcpListener使AcceptSocket方法出现异常
//在异常处理中关闭套接字并终止线程
if (socket != null)
{
if (socket.Connected)
{
socket.Shutdown(SocketShutdown.Receive);
}
socket.Close();
}
myThread.Abort();
}
}
}
  • 打赏
  • 举报
回复
大规模的测试,产品化的测试,这是必需的。不要相信仅仅是为了掩饰一个特别方法随便写的所谓范例。即使是msdn上的通讯范例,大多数也是非产品化的。因为它如果按照产品设计必须有的要素来设计,初学者反而会“看不懂”。这就是一个现实矛盾。
  • 打赏
  • 举报
回复
网上那些“范例”很多都是所谓的单机demo,不要相信是产品的。

回答你#4楼的问题。最起码的,通用服务器不是什么什么127.0.0.1进行bind操作的。比较正规的是IPAddress.Any,比较业余的也是从dns对象中遍历IPAddress集合,找出其中第一个符合ipv4模式的地址。

你看到127.0.0.1的,直接把这个写“范例”的作者当作骗子好了。
lkang08 2011-06-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 porschev 的回复:]
有杀毒软件?

关闭。。。

这提示应该是端口占了吧。。。

你现在还是在服务器端吧。。
[/Quote]貌似不是在服务器端了,程序开始默认获取本机ip地址以及一个可用的端口,然后对这个端口进行监听。然后让你添加一个或多个好友ip地址及端口号。我是在添加好友的时候出现这个错误的。添加好友的ip我试过用127.0.0.1和本机ip,都报这个错
Maa 2011-06-19
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 lkang08 的回复:]

引用 2 楼 btxp163 的回复:

在运行中输入cmd ,然后用 netstat -an 看下有没有8888这个端口?

至少可以看是不是被占用了
端口没被占用,我换了很多个端口还是不行
[/Quote]

这个8888应该是服务端的监听端口,如果netstat看不到的话肯定是会发生lz你所说的问题的。你应该还要启动这个服务端才对。
Maa 2011-06-19
  • 打赏
  • 举报
回复
这个应该跟防火墙没有关系,就是服务端没启动/监听。
lkang08 2011-06-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 btxp163 的回复:]

在运行中输入cmd ,然后用 netstat -an 看下有没有8888这个端口?

至少可以看是不是被占用了
[/Quote]端口没被占用,我换了很多个端口还是不行
lkang08 2011-06-19
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 jq_whh 的回复:]

是TCP协议吧,原因是服务器没有启动,或者启动了没有处于侦听状态
[/Quote]
是TCP协议,在实例化tcpclient = new TcpClient(remoteIpString, remotePort);的时候报错。
我想问一下,在同一个程序中怎么既充当服务器有充当客户端?
很有如果我用本机的ip做监听服务器地址,然后用127.0.0.1做客户机的ip地址可以嘛?
我想做的是P2P数据传送
jq_whh 2011-06-19
  • 打赏
  • 举报
回复
是TCP协议吧,原因是服务器没有启动,或者启动了没有处于侦听状态
btxp163 2011-06-19
  • 打赏
  • 举报
回复
在运行中输入cmd ,然后用 netstat -an 看下有没有8888这个端口?

至少可以看是不是被占用了
porschev 2011-06-19
  • 打赏
  • 举报
回复

有杀毒软件?

关闭。。。

这提示应该是端口占了吧。。。

你现在还是在服务器端吧。。

111,111

社区成员

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

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

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