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:
// Identificacao do servidor
InetAddress iServer = null;
InetAddress iClient = null;
// Exibindo mensagem de inicializacao do servidor
System.out.println("Socket Server RUNNING");
// Criando o Socket Server
ServerSocket serverSocket = new ServerSocket(1313, 0, iServer
.getByName("k"));
// Pegando dados do Servidor
int iTimeOut = serverSocket.getSoTimeout();
int iLocalPort = serverSocket.getLocalPort();
InetAddress inetAddress = serverSocket.getInetAddress();
System.out.println("Address: " + inetAddress.toString());
System.out.println("Port: " + iLocalPort);
System.out.println("TimeOut: " + iTimeOut);
int iLoop = 0;
System.out.println("Entrando no LOOP\n");
while (iLoop == 0) {
// Aguardando conexoes
Socket socket = serverSocket.accept();
String ss = socket.toString();
System.out.println("Client Socket Info: " + ss);
iClient = socket.getInetAddress();
System.out.println("Client: " + iClient.toString());
// Criar um canal para receber dados
DataInputStream in = new DataInputStream(socket.getInputStream());
// Criar um canal para enviar dados
DataOutputStream ou = new DataOutputStream(socket.getOutputStream());
System.out.println("Recebendo dados do CLIENT\n ");
// Aguarda Recebimento dos dados
String s = in.readUTF();
System.out.println("Received from Client: " + s);
// Identificando os SERVICOS
// Enviando Dados
ou.writeUTF("Respondendo do Servidor para o Client...\0\n");
// Fechando canais de comunicacao
in.close();
ou.close();
// Fechando o socket q esta atendendo o cliente
socket.close();
if (s.equals("sai")) {
break;
}
}
// Fechando o Servidor
serverSocket.close();
System.out.println("Socket Server DOWN");