Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#插座(未建立连接)_C#_Sockets - Fatal编程技术网

C#插座(未建立连接)

C#插座(未建立连接),c#,sockets,C#,Sockets,这是我的客户 static Socket sck; static void Main(string[] args) { sck = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); IPEndPoint localEndpoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 1234);

这是我的客户

static Socket sck;
    static void Main(string[] args)
    {
        sck = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
        IPEndPoint localEndpoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 1234);
        try
        {
            sck.Connect(localEndpoint);
        }
        catch (Exception ex)
        {
            Console.Write("Unable to connect local endpoint! \r\n ");
            Main(args);
        }
        string text = Console.ReadLine();
        byte[] data = Encoding.ASCII.GetBytes(text);
        sck.Send(data);
        Console.Write("Data sent ! \r\n");
        Console.Write("Press any key to continue...");
        Console.Read();
        sck.Close();
    }
这是我的服务器

 static byte[] Buffer { get; set; }
    static Socket sck;
    static void Main(string[] args)
    {
        sck = new Socket(AddressFamily.InterNetwork, SocketType.Stream,  ProtocolType.Tcp);
        sck.Bind(new IPEndPoint(IPAddress.Any, 1234));
        sck.Listen(100);
        Socket accepted = sck.Accept();
        Buffer = new byte[accepted.ReceiveBufferSize];
        int byteReades = accepted.Receive(Buffer);
        byte[] formatted = new byte[byteReades];
        for (int i = 0; i < byteReades; i++)
        {
            formatted[i] = Buffer[i];
        }
        string strData = Encoding.ASCII.GetString(formatted);
        Console.Write(strData + "\r\n");
        sck.Close();
        accepted.Close();
        Console.ReadKey();
    }
静态字节[]缓冲区{get;set;}
静态插座;
静态void Main(字符串[]参数)
{
sck=新套接字(AddressFamily.InterNetwork、SocketType.Stream、ProtocolType.Tcp);
绑定(新的IPEndPoint(IPAddress.Any,1234));
听(100);
接受套接字=sck.Accept();
缓冲区=新字节[accepted.ReceiveBufferSize];
int byteReades=已接受。接收(缓冲区);
字节[]格式化=新字节[byteReades];
for(int i=0;i
当我试图运行客户机以便向服务器发送数据时,我遇到了SocketException“未在127.0.0.1:1234上建立连接”。错误代码是10061。
请帮忙解决这个问题

您需要指定防火墙异常。您可以使用命令行执行中指定的操作

例如:

netsh advfirewall firewall add rule name=“Socket Test”dir=in action=allow remoteip=127.0.0.1 protocol=TCP localport=1234

然后,稍后将其删除:


netsh advfirewall firewall delete rule name=“Socket Test”

这无疑是一个防火墙问题

ctrl+f并搜索100061。在处理套接字异常时,这是一个非常好的习惯,因为您可以从错误代码号中获得一些含义(通常,有时这不是很有帮助)。此错误代码属于“由于目标计算机主动拒绝,无法建立连接”组。有关链接的更多详细信息


也可能是插座没有很快释放,或者你的lucky已经被其他东西使用了。我会先检查防火墙设置,因为这是一件非常容易的事情

正如M.Avery所指出的,这听起来确实像是防火墙/端口问题。我已经测试了你的代码,效果很好


如果您在Windows 7上使用Windows防火墙,请查看此链接:

我复制了您在2个新控制台应用程序中提供的代码。一个用于客户端,一个用于服务器。他们俩都干得很好。最有可能的问题是你这方面的问题。可能是防火墙设置。但是代码运行良好。您在哪一行收到异常?我认为您的防火墙正在阻止端口1234。。。错误10061是一个“连接被拒绝”错误。谢谢你的回答,我认为你对防火墙设置的问题是正确的,但是我需要在该设置中更改什么。在这一行。Connect(localEndpoint);先生,同样的例外。那么你几乎别无选择,只能配置防火墙例外。但是,我建议不要在127.0.0.1上显式设置ANY/ANY,因为它可能会被误用。我添加了一个如何使用Netshw的示例,我需要更改防火墙设置以解决此错误,只是我是这项技术的初学者在我看来这不是防火墙问题,因为我从我的机器上禁用了防火墙,而没有防火墙,我面临着同样的例外。这并不意味着问题不在防火墙设置中??