Правильный способ иметь 2 запроса между клиентом и сервером - PullRequest
0 голосов
/ 21 марта 2019

У меня есть сетевое приложение P2P, которое действует как сервер и клиент.

Приложение подключается к нескольким клиентам в сетке и отправляет «данные» друг другу после обработки данных.

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

Это потому, что я не использую async в методах сервера, или потому, что я не должен отправлять запрос при обработке одного?

прото

rpc submit_data(DataSubmission) returns (DataSubmissionAck);

RPC-сервер

public async void Start()
{
    _server = new Server()
    {
       Services = {
          DataService.BindService(new DataService())),
       },
       Ports = { new ServerPort(_IpAddress, _Port, ServerCredentials.Insecure) }
    };

    _server.Start();
}

Клиентский метод

public void SubmitData(Data data)
{
    ...
    var serverResponse = _serviceClient.submit_data(request);
    ...
}

Серверный метод

public override Task<DataSubmissionAck> submit_data(DataSubmission request, ServerCallContext context)
{
    DataSubmissionAck clientResponse = new DataSubmissionAck();
    return Task.FromResult(clientResponse);
}

1 Ответ

0 голосов
/ 23 марта 2019

То, что, похоже, сработало, - это выполнение серверных и клиентских вызовов всех вызовов async.

...