Ошибка подключения к сокету C # - PullRequest
1 голос
/ 07 апреля 2011

Я работаю с сокетами в C # и получаю следующую ошибку:

Запрос на отправку или получение данных был отклонен, поскольку сокет не подключен и (при отправке насокет датаграммы с использованием вызова sendto) адрес не был указан

Вот код, который я выполняю:

    private void HostSubscriberService()
    {
        IPAddress ipV4 = PublisherService.ReturnMachineIP();

        var localEP = new IPEndPoint(ipV4, _port);
        var server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
        server.Bind(localEP);

        StartListening(server);
    }

    private void StartListening(Socket server)
    {
        EndPoint remoteEP = new IPEndPoint(IPAddress.Any, 0);
        while (true)
        {
            var data = new byte[1024];
            int recv = server.ReceiveFrom(data, ref remoteEP);
            string messageSendFromClient = Encoding.ASCII.GetString(data, 0, recv);

            MessageBox.Show(messageSendFromClient);
        }
    }

Произошла ошибка @ int recv = server.ReceiveFrom(data, ref remoteEP);

Мне просто нужно прослушать новые входящие соединения, а затем распечатать сообщение, отправленное с нового клиента.

Мне нужно, чтобы оно работало по протоколу TCP, поскольку некоторые сообщения будут иметь размер> 1500 байт.

Спасибо!

Ответы [ 2 ]

2 голосов
/ 07 апреля 2011

Вам нужно .BeginAccept (), прежде чем вы сможете получить.

Вот ссылка на пример с асинхронным сокет-сервером с единичным кодом

1 голос
/ 07 апреля 2011

ReceiveFrom () для UDP, используйте Accept () и Receive () для TCP

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...