Duvida!Servlet Java manipulando socket C

0 respostas
L
Bom dia galera.Estou fazendo um trab pra facu e preciso substituir um console em C por uma interface JSP. O console faz: Lista cliente conectados, executa processo no cliente, lista processos no cliente, mata os processos. Bom, a pagina jsp faz uma requisicao pra um Servlet que se passa de Cliente para conectar via Socket no servidor em C. A conexao e enviar e receber uma msg no servidor para o Jsp eu consigo..porem nao consigo e nao sei como fazer pra enviar comandos ou usar as funcoes implementadas em c no servidor..Sei da possibilida de usar Métodos nativos(JNI), mas nesse caso sera q precisaria?? Se alguem puder me ajudar, ficaria muito grato!! vou anexar parte do código JSP, o servlet .Caso precise coloco parte do codigo em C. index.jsp
<%-- 
    Document   : index
    
--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@page import="java.net.*"%>
<%@page import="java.io.*"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">
<%
    String ip = request.getParameter("ip");
    if(ip==null)
        ip="";
    String msg = request.getParameter("msg");
    if(msg==null)
        msg="";
%>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>NetworkManager</title>
        <script type="text/javascript">
            var httpObject;
            function processaResposta(){
              if(httpObject.readyState==4){
                document.getElementById("msg").innerHTML=httpObject.responseText;
              }

            }
            function requisicaoAjax(){
              if (window.XMLHttpRequest){
                httpObject=new XMLHttpRequest();
              }else if (window.ActiveXObject){
                httpObject=new ActiveXObject("Microsoft.XMLHTTP");
              }else{
                alert("Navegador não suporta Ajax");
              }
              httpObject.onreadystatechange=processaResposta;
              httpObject.open("GET","monitor",true);
              httpObject.send(null);
              var p = setTimeout("requisicaoAjax()", 10000)
            }
            requisicaoAjax();
        </script>
    </head>
    <body>
        <form action="index.jsp" method="get">
            Endereço IP:<br>
            <input type="text" name="ip" value="<%=ip%>" size="15">
            <br>
            Mensagem:<br>
            <input type="text" name="msg" value="<%=msg%>" size="80">
            <br><br>
            <input type="submit" value="Buscar">
        </form>
        <%
            try{
                byte buffer[]=new byte[2000];
                if(!ip.trim().equals("")){
                    Socket s = new Socket(ip, 4321);
                    InputStream is = s.getInputStream();
                    OutputStream os = s.getOutputStream();
                    DataOutputStream dos = new DataOutputStream(os);
                    dos.writeUTF(msg);
                    int rec = is.read(buffer);
                    byte recebido[] = new byte[rec];
                    for(int i=0; i<rec;i++)
                        recebido[i] = buffer[i];
                    String retorno = new String(recebido);
                    out.println("<DIV style='color:blue'>Mensagem recebida: " +  retorno + "</DIV>");
                }
             }catch(Exception e){
                 out.println("<DIV style='color:red'>" + e.getMessage() + "</DIV>");
             }
        %>
        <div id="msg"></div>
    </body>
</html>
servlet.java
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package networkmanager;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.net.*;
import java.io.*;
/**
 *
 * @author
 */
public class monitor extends HttpServlet {
   
    /** 
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {

            byte buffer[]=new byte[2000];
            Socket s = new Socket("127.0.0.1", 4321);
            InputStream is = s.getInputStream();
            int rec = is.read(buffer);
            byte recebido[] = new byte[rec];
            for(int i=0; i<rec;i++)
              recebido[i] = buffer[i];
            String retorno = new String(recebido);
            out.println("<b>" + retorno + "</b>");
        } catch(Exception e){
            out.println("ERRO: " + e.getMessage());
        } finally {
            out.close();
        }
    } 

    // <editor-fold defaultstate="collapsed" desc="Métodos HttpServlet. Clique no sinal de + à esquerda para editar o código.">
    /** 
     * Handles the HTTP <code>GET</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    } 

    /** 
     * Handles the HTTP <code>POST</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }

    /** 
     * Returns a short description of the servlet.
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

}
Criado 26 de maio de 2010
Respostas 0
Participantes 1