由于套接字未连接,发送或接收数据的请求被拒绝

本文关键字:数据 请求 拒绝 套接字 连接 | 更新日期: 2023-09-27 18:12:05

所以我试图发送一个数据包,但我一直得到这个错误

任何帮助都太棒了!

非常感谢!

错误信息:发送或接收数据的请求被拒绝,因为套接字未连接并且(当使用sendto调用在数据报套接字上发送时)未提供地址

代码:

    private void button1_Click(object sender, EventArgs e)
    {
        byte[] packetData = Encoding.ASCII.GetBytes(textBox1.Text);
        const string ip = "127.0.0.1";
        const int port = 5588;

        var ep = new IPEndPoint(IPAddress.Parse(ip), port);

        var client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
        client.SendTo(packetData, ep);
    }
}

}

由于套接字未连接,发送或接收数据的请求被拒绝

var client = new Socket(AddressFamily. net)互联网络,SocketType。流,ProtocolType.Tcp)

这将创建一个使用TCP(这是一个流协议)的套接字。如果你想在一个面向连接的套接字上调用Socket.SendTo,你必须首先通过调用Socket.Connect来连接它。

如果你只打算发送数据报,使用UDP是一个更好的选择,它根本不需要连接。

var client = new Socket(AddressFamily. net)互联网络,SocketType。Dgram ProtocolType.Udp)

private void button1_Click(object sender, EventArgs e)
{
    byte[] packetData = Encoding.ASCII.GetBytes(textBox1.Text);
    const string ip = "75.126.77.26";
    const int port = 5588;

    var ep = new IPEndPoint(IPAddress.Parse(ip), port);

    var client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
    client.Connect(ep);
    client.SendTo(packetData, ep);
}

为清楚起见,加了这行:

    client.Connect(ep);

我认为您正在寻找的是在呼叫client.SendTo之前呼叫client.Connect。您还需要在调用connect后调用client.Connected以确保您已连接。

这个帮助页有一个使用套接字对象的示例:http://msdn.microsoft.com/en-us/library/2b86d684%28v=vs.110%29.aspx.

    // Connect to the host using its IPEndPoint.
    s.Connect(hostEndPoint);
    if (!s.Connected)
    {
      // Connection failed, try next IPaddress.
      strRetPage = "Unable to connect to host";
      s = null;
      continue;
    }