【问题标题】:A request to send or receive data was disallowed because the socket is not connected C#不允许发送或接收数据的请求,因为套接字未连接 C#
【发布时间】:2014-12-20 05:30:09
【问题描述】:

我正在尝试向机器发送用户名和密码验证响应,但出现以下错误

由于未连接套接字并且(在使用 sendto 调用在数据报套接字上发送时)未提供地址,因此不允许发送或接收数据的请求

static void Main(string[] args)
{
    Socket sck = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

    sck.Bind(new IPEndPoint(IPAddress.Parse("192.168.5.40"), 10022));

    sck.Listen(1);

    Socket accepted = sck.Accept();
    byte[] buffer = Encoding.Default.GetBytes("Test post");
    accepted.Send(buffer, 0, buffer.Length, 0);

    buffer = new byte[255];

    int rec = accepted.Receive(buffer, 0, buffer.Length, 0);
    Array.Resize(ref buffer, rec);
    Console.WriteLine("Recieved: {0}", Encoding.Default.GetString(buffer,24,buffer.Length-24));
    Console.WriteLine("Recieved: {0}", BitConverter.ToString(buffer, 0, 24));

    string hexValues = "00-00-00-01-f8-a0-3d-48-0b-6d-00-00-3d-0a-bf-09-00-00-00-57-00-10-00-00-00";

    byte[] hex = StringToByteArray(hexValues);

    sck.Send(hex, 0, hex.Length, 0);
    sck.Close();
    accepted.Close();
    Console.Read();
}

【问题讨论】:

    标签: c# connect server


    【解决方案1】:

    您尝试在侦听传入连接的套接字上发送数据:

    sck.Send(hex, 0, hex.Length, 0);
    

    您应该改为通过accepted 发送:

    accepted.Send(hex, 0, hex.Length, 0);
    

    【讨论】:

      猜你喜欢
      • 2014-08-30
      • 2013-07-31
      • 1970-01-01
      • 2013-02-03
      • 2018-07-01
      • 2013-11-24
      • 2021-08-16
      • 2018-06-20
      • 2021-10-11
      相关资源
      最近更新 更多