У меня есть сетевое приложение 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);
}