Estou tendo dificuldade para desenvolver uma aplicação em java usando cliente/Servidor onde o servidor tem que ser iterativo e a comunicação usa sock_stream.
O cliente irá tentar a conexão
Se nao espera
sim - Lê dimensão da matriz
Lê colunas
Lê vetor
Envia arquivo.dat
Espera resposta
Recebe resposta(.dat)
Desconecta
Mostra respsota(.dat)
Apaga ( Resp.dat)
fim se
Já o servidor
associa endereço - BIND()
Espera conexão - Listen()
Aceita a conexão- Accept()
Recebe arquivo(*.dat)
Chamará outro programa que no caso será o matlab 6 que será usado para realizar a programação lineare apos executado e este enviará a (Resp.dat)
Espera a criaçao do arquivo
envia resposta
close()- apaga arquivos (Dados.dat, resp.dat)
Estou tendo muito dificuldade e estou precisando muito da ajuda de quem estiver interessado em ajudar. E qualquer dúvida também estarei disponivel para eventual duvidas posteriores.
esse teu servidor precisa ouvir varios clientes ao mesmo tempo? Tenho um exemplo bem básico aqui que usa Threads, acho que serve pra algum começo…
F
FegutaoPJ
Caro amigo como havia dito antes o servidor é iterativo ou seja deve ouvir apenas um cliente por vez. Mas se estiver algum exemplo você pode me enviar pois estou precisando muito. Acho que o que você me falou dá para fazer algumas modificções.
Valeu amigo,
fegutao
Aguardo sua resposta
M
matheusPJ
não achei oq havia dito, mas tenho essas duas classes, uma servidor e outra cliente, que se enviam Strings… veja se consegue aproveitar algo…
Server.java
importjava.io.*;importjava.net.*;importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;publicclassServerextendsJFrame{privateJTextFieldenterField;privateJTextAreadisplayArea;privateObjectOutputStreamoutput;privateObjectInputStreaminput;privateServerSocketserver;privateSocketconnection;privateintcounter=1;publicServer(){super("Server");Containerbox=getContentPane();enterField=newJTextField();enterField.setEnabled(false);enterField.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){sendData(e.getActionCommand());enterField.setText("");}});box.add(enterField,BorderLayout.NORTH);displayArea=newJTextArea();box.add(newJScrollPane(displayArea),BorderLayout.CENTER);setSize(300,150);setVisible(true);}publicvoidrunServer(){try{// Etapa 1: cria um ServerSocketserver=newServerSocket(6000,10);while(true){// Etapa 2: espera uma conexaowaitForConnection();// Etapa 3: obtem fluxos de entrada e saidagetStreams();// Etapa 4: processa a conexaoprocessConnection();// Etapa 5: fecha a conexaocloseConnection();++counter;}}catch(EOFExceptione1){System.out.println("Cliente fechou a conexao");}catch(IOExceptione2){e2.printStackTrace();}}privatevoidwaitForConnection()throwsIOException{displayArea.setText("Esperando pela conexao...\n");connection=server.accept();displayArea.append("Conexao "+counter+" recebida de: "+connection.getInetAddress().getHostName());}privatevoidgetStreams()throwsIOException{output=newObjectOutputStream(connection.getOutputStream());output.flush();input=newObjectInputStream(connection.getInputStream());displayArea.append("\nGot I/O streams\n");}privatevoidprocessConnection()throwsIOException{Stringmessage="SERVER> conexao feita";output.writeObject(message);output.flush();enterField.setEnabled(true);do{try{message=(String)input.readObject();displayArea.append("\n"+message);displayArea.setCaretPosition(displayArea.getText().length());}catch(ClassNotFoundExceptionclassNotFount){displayArea.append("\n**Tipo de objeto recebido desconhecido**");}}while(!message.equals("CLIENT> exit"));}privatevoidcloseConnection()throwsIOException{displayArea.append("\nUsuario terminou a conexao");enterField.setEnabled(false);output.close();input.close();connection.close();}privatevoidsendData(Stringmessage){try{output.writeObject("SERVER> "+message);output.flush();displayArea.append("\nSERVER> "+message);}catch(IOExceptionio){displayArea.append("Erro ao escrever a mensagem");}}publicstaticvoidmain(Stringargs[]){Serverwin=newServer();win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);win.runServer();}}
Client.java
importjava.io.*;importjava.net.*;importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;publicclassClientextendsJFrame{privateJTextFieldenterField;privateJTextAreadisplayArea;privateObjectOutputStreamoutput;privateObjectInputStreaminput;privateStringmessage="";privateStringchatServer;privateSocketclient;publicClient(Stringhost){super("Client");chatServer=host;Containerbox=getContentPane();enterField=newJTextField();enterField.setEnabled(false);enterField.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){sendData(e.getActionCommand());enterField.setText("");}});box.add(enterField,BorderLayout.NORTH);displayArea=newJTextArea();box.add(newJScrollPane(displayArea),BorderLayout.CENTER);setSize(300,150);setVisible(true);}publicvoidrunClient(){try{// Etapa 1: cria um socket para fazer a conexaoconnectToServer();// Etapa 2: obtem os fluxos de entrada e saidagetStreams();// Etapa 3: processa a conexaoprocessConnection();// Etapa 4: fecha a conexao closeConnection();}catch(EOFExceptione1){System.out.println("O Servidor encerrou a conexao");}catch(IOExceptione2){e2.printStackTrace();}}privatevoidgetStreams()throwsIOException{output=newObjectOutputStream(client.getOutputStream());output.flush();input=newObjectInputStream(client.getInputStream());displayArea.append("\nGot I/O streams\n");}privatevoidconnectToServer()throwsIOException{displayArea.setText("Fazendo a conexao...");client=newSocket(InetAddress.getByName(chatServer),6000);displayArea.append("Conectado a: "+client.getInetAddress().getHostName());}privatevoidprocessConnection()throwsIOException{enterField.setEnabled(true);do{try{message=(String)input.readObject();displayArea.append("\n"+message);displayArea.setCaretPosition(displayArea.getText().length());}catch(ClassNotFoundExceptionclassNotFound){displayArea.append("\n**Tipo de objeto recebido desconhecido**");}}while(!message.equals("SERVER> exit"));}privatevoidcloseConnection()throwsIOException{displayArea.append("\nFechando conexao");output.close();input.close();client.close();}privatevoidsendData(Stringmessage){try{output.writeObject("CLIENT> "+message);output.flush();displayArea.append("\nCLIENT> "+message);}catch(IOExceptionio){displayArea.append("Erro ao enviar mensagem");}}publicstaticvoidmain(String[]args){Stringhost=JOptionPane.showInputDialog(null,"Digite o host: ");Clientwin=newClient(host);win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);win.runClient();}}
M
matheusPJ
e respondendo a tua pergunta da mensagem privada, pra abrir um programa, pode fazer assim:
try{Runtime.getRuntime().exec( "C:\\AlgumPrograma.exe" );} catch( Exception e ) {}