C# 提示:由于目标机积极拒绝,无法连接。。。

yanjingshe22 2010-07-14 06:55:53
小弟最近想写了监控端,就监控客户端是否开启。

小弟的设想是,开了服务端后,就绑定本机的IP和一个端口。客户端开启的时候就尝试对这个IP和端口进行连接。

现在出现的问题是,抛了个异常,异常的信息是:由于目标机积极拒绝,无法连接。。。。

小弟的服务端的socket代码如下:
class ServerSocket
{
#region 私有字段定义和构造函数
private const int NUM = 80;
private int reciv = 0;
//设定IP值
static IPAddress ip = IPAddress.Parse("127.0.0.1");
//设定端口值
static int port = 5000;
//持有客户端socket对象的引用
public Socket client { set; get; }
IPEndPoint ep = new IPEndPoint(ip, port);
public ServerSocket()
{
client = null;
}

#endregion

TcpListener listner = new TcpListener(ip, port);

//开始监听

public void ClientListner()
{
Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP);
server.SetSocketOption(SocketOptionLevel.Socket,SocketOptionName.ReuseAddress,true);
//server.Bind(ep);

listner.Start();
}
}

小弟的客户端代码如下:
y
{
Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP);
IPAddress ip = IPAddress.Parse("127.0.0.1");
IPEndPoint ep = new IPEndPoint(ip, 5000);

server.Connect(ep);

byte[] buffer = new byte[255];
int recv = 0;
string data = null;

recv = server.Receive(buffer);

if (recv > 0)
{
Console.WriteLine("连接上。。。。");
Console.WriteLine("准备接受数据");

data = Encoding.ASCII.GetString(buffer, 0, recv);
Console.WriteLine(data);

while (true)
{
string input;
input = Console.ReadLine();
if (input == "exit")
{
break;
}
}
server.Shutdown(SocketShutdown.Both);
server.Close();
}
}
catch (SocketException e)
{
Console.WriteLine(e.Message);
Console.ReadLine();
}

忘高手指点指点。谢谢!
...全文
1616 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
cqqinqin 2010-08-03
  • 打赏
  • 举报
回复
看看,正需要
yanjingshe22 2010-07-14
  • 打赏
  • 举报
回复
谢谢各位的指点,程序正确解决了。现在散分,谢谢大家。
wenbin 2010-07-14
  • 打赏
  • 举报
回复

using System;
using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Text;

class MyTcpListener
{
public static void Main()
{
TcpListener server=null;
try
{
// Set the TcpListener on port 13000.
Int32 port = 13000;
IPAddress localAddr = IPAddress.Parse("127.0.0.1");

// TcpListener server = new TcpListener(port);
server = new TcpListener(localAddr, port);

// Start listening for client requests.
server.Start();

// Buffer for reading data
Byte[] bytes = new Byte[256];
String data = null;

// Enter the listening loop.
while(true)
{
Console.Write("Waiting for a connection... ");

// Perform a blocking call to accept requests.
// You could also user server.AcceptSocket() here.
TcpClient client = server.AcceptTcpClient();
Console.WriteLine("Connected!");

data = null;

// Get a stream object for reading and writing
NetworkStream stream = client.GetStream();

int i;

// Loop to receive all the data sent by the client.
while((i = stream.Read(bytes, 0, bytes.Length))!=0)
{
// Translate data bytes to a ASCII string.
data = System.Text.Encoding.ASCII.GetString(bytes, 0, i);
Console.WriteLine("Received: {0}", data);

// Process the data sent by the client.
data = data.ToUpper();

byte[] msg = System.Text.Encoding.ASCII.GetBytes(data);

// Send back a response.
stream.Write(msg, 0, msg.Length);
Console.WriteLine("Sent: {0}", data);
}

// Shutdown and end connection
client.Close();
}
}
catch(SocketException e)
{
Console.WriteLine("SocketException: {0}", e);
}
finally
{
// Stop listening for new clients.
server.Stop();
}


Console.WriteLine("\nHit enter to continue...");
Console.Read();
}
}


微软的代码,你试下,地址和端口修改下
dancingbit 2010-07-14
  • 打赏
  • 举报
回复
你的Server只是执行了Start,只是开始了侦听,然而还需要AcceptSocket或AcceptTcpClient方法来接受来自客户端的连接请求。
wuyq11 2010-07-14
  • 打赏
  • 举报
回复
采用TCP/udp协议进行连接,检查windows防火墙是否开放相应SocketTCP/udp端口
地址是否正确
资源释放
yanjingshe22 2010-07-14
  • 打赏
  • 举报
回复
我试过了,还是不行。

我找了下原因,好像是那个端口根本就没开起来。不知道为什么没开起来。求解。
wenbin 2010-07-14
  • 打赏
  • 举报
回复
ProtocolType.TCP
你试下

111,130

社区成员

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

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

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