下载了个c#版的p2p聊天工具,调试时出现“由于目标计算机积极拒绝,无法连接。 127.0.0.1:8888”错误提示,请问高手这如何解决。
ps:防火墙我关闭了,端口号也测试了几个,都是大于1000的,不过都出现这个错误
我是刚接触网络编程,现在课程设计需要用到,所以想找个例子学习一下。
资源我重新上传了(我不知道我在哪下载的了,只好重新上传)
http://download.csdn.net/source/3377954
ps:防火墙我关闭了,端口号也测试了几个,都是大于1000的,不过都出现这个错误
我是刚接触网络编程,现在课程设计需要用到,所以想找个例子学习一下。
资源我重新上传了(我不知道我在哪下载的了,只好重新上传)
http://download.csdn.net/source/3377954
解决方案 »
- 在一个.net WEB网站中,怎么添加web服务功能?
- 请教一个C#连接Mysql的问题
- Microsoft.csharp试编译C#代码的问题
- DataTable列的类型问题
- 截取字符串中的第一段字符(以回车为结尾)
- 页面传值问题大家帮帮我啊!!!!!1
- ActiveReport打印问题求教!用A3的纸横向打印,无论如何都要多打一张白纸出来(预览时有那条红线)?
- 如何将xml文件读取到dataGridView中啊
- 为什么我的图片链接会有一个框啊?
- 使用过msde 2000 者请进!!!!!
- 如何把winform放在桌面最底层,要同时支持xp和win7的。
- .NET 添加 frlib.DLL 出现的问题
我想问一下,在同一个程序中怎么既充当服务器有充当客户端?
很有如果我用本机的ip做监听服务器地址,然后用127.0.0.1做客户机的ip地址可以嘛?
我想做的是P2P数据传送
这个8888应该是服务端的监听端口,如果netstat看不到的话肯定是会发生lz你所说的问题的。你应该还要启动这个服务端才对。
我把监听的代码贴上来,在程序加载方法里调用
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();
}
}
}
在 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)
如果服务器启动监听时监听的地址不是127.0.0.1,而是192.168.0.1,那么直接连接127.0.0.1会被拒绝,连接192.168.0.1才会成功。楼上sp1234的说法正确,服务器应该监听IPAddress.Any,也就是0.0.0.0,那么通杀所有ip连接