| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/01/2007 13:57:24
|
brlima
Moderador
![[Avatar]](/images/avatar/fc2c7c47b918d0c2d792a719dfb602ef.png)
Membro desde: 12/05/2003 14:03:38
Mensagens: 1537
Localização: São Paulo - SP
Offline
|
Pessoal,
Estou tentando fazer uma implementação de um servidor socket em java para escutar um client em feito em C.
O problema está em tentar ler o conteudo enviado pelo client (que está em C).
O servidor está OK. o Client tb. Se o client é feito em java, a comunicação ocorre perfeitamente. Mas em C não esta ocorrendo isso.
Aparentemente, o server em java consegue reconhecer o envio do pacote pelo client em C, mas nao consegue recuperar o conteudo do mesmo pelo método readUTF.
Segue o codigo em java do server:
|
Bruno R. Lima
-------------------------------------------
flickr :: twitter |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/01/2007 15:43:43
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
String s = in.readUTF();
Você precisa implementar algo semelhante ao DataInputStream/DataOutputStream em C. Para tanto, é necessário
saber como é o formato de dados esperado por essas Streams.
Por exemplo:
No caso de readUTF/writeUTF, é necessário pôr 2 bytes que indicam o comprimento da String (já transformada para bytes), e codificar a String em UTF modificada (ou seja, se houver um zero binário dentro da string, não é codificada como um byte zero, mas de uma outra forma que deve ser vista no fonte dessas classes.
deve gerar os seguintes bytes, que o programa C deve interpretar:
Note que a letra ü que usa apenas 1 byte em codificação ISO-8859-1, usa 2 em UTF-8.
Outra coisa é que o comprimento ficou em 16 bytes (isso dá 0010 em hexadecimal, ou seja, os 2 primeiros bytes ficam 00 10).
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/01/2007 18:51:08
|
brlima
Moderador
![[Avatar]](/images/avatar/fc2c7c47b918d0c2d792a719dfb602ef.png)
Membro desde: 12/05/2003 14:03:38
Mensagens: 1537
Localização: São Paulo - SP
Offline
|
Valeu Thingol!
Não cheguei nesse ponto, mas ajudou a entender que DataStream não era o que eu precisava...
Usei o BufferedStream, e funcionou legal...
Tks.!
|
Bruno R. Lima
-------------------------------------------
flickr :: twitter |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/05/2011 13:33:36
|
gennf
Entusiasta Java
Membro desde: 17/05/2011 12:59:51
Mensagens: 16
Offline
|
Pessoal,
Me desculpe por ressuscitar esse tópico mas estou com um problema semelhante mas com PHP e Java.
Tenho um servidor de socket em PHP e um cliente em JAVA. Com o cliente (JAVA) consigo me conectar tranquilamente ao servidor (PHP), o servidor recebe os dados enviados pelo cliente, mas, o cliente não consegue receber os dados enviados pelo servidor.
Será que o problema é mesmo mencionado nesse tópico? Será que vocês podem me ajudar a resolver?
Desde já agradeço a atenção de vocês.
Atenciosamente,
GENNF
|
|
|
 |
|
|