em um trabalho de faculdade, preciso fazer um servidor de jogos de sudoku.
esse servidor é feito em C; a cada cliente conectado, o socket respectivo ao cliente é passado para um novo processo q controla as acoes possiveis a serem realizadas pelo cliente. O cliente é feito em java. Porem, apos um determinada troca de dados entre o cliente e o servidor ( 82 bytes servidor -> cliente pra ser preciso ), qq nova mensagem enviada pelo cliente NAO chega no servidor. Em raras vezes ela chega com um delay mto grande, e o cliente nao consegue obter a resposta, já q ao testar se existem bytes pra serem lidos na inputstream do socket sempre é retornado zero.
Pessoal aproveitando o topico do Andre a comunicaçao desta duas linguagem, em termos de socket, tem d fazer alguma moficaçoes (cast )nos inputs/outputs ou a comunicaçao se dah normalmente.
[/code]
try
{ BufferedReader rd = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String str;
while ((str = rd.readLine()) != null)
{
process(str);
}
rd.close();
}
catch (IOException e)
{ }
}
[code]
Se alguem tiver um ex bem simples ai e puder mandar pra eu agradeço.Preciso do servidor em c e o cliente em java.
Ateh
Carlos Martins
ViniGodoy
Oi Carlos,
Não entendi exatamente qual o seu problema. Poderia explicar melhor?
T
thingol
andre_udi:
Em raras vezes ela chega com um delay mto grande
Isso é devido ao algoritmo de Nagle, ou seja, é necessário desligá-lo com o TCP_NODELAY.
Se não quiser usar TCP e sim UDP (orientado a mensagens) esse problema desaparece, mas você cria outro, que é o de o protocolo UDP não ser confiável (ou seja, mensagens podem perder-se).
andre_udi
ola amigos, obrigado pelas sugestoes e desculpem pela demora em responder.
qto ao erro, era uma falha em um painel q travava toda a aplicacao.
em uma das tentativas de resolver o problema, o utilizamos java.nio,
q se mostrou + rapida e + confiavel. fica a dica…