Definir entrada e saída

20 views
Skip to first unread message

Gregorio

unread,
May 17, 2013, 1:33:32 PM5/17/13
to python...@googlegroups.com
Eai pessoal, tudo certo?

Bem, estou construindo um cliente de um chat para minha cadeira de Sistemas Distribuídos através de sockets.

Eis o problema: Em java conseguia definir o out como saída para o socket, assim quando em dava o System.out.print() ele jogava para o buffer do socket e não imprimia na tela, função que o servidor de chat fica responsável pro fazer:

exemplo \/

Socket s = new Socket(host, porta);
            final BufferedReader in = new BufferedReader(
                    new InputStreamReader(
                    s.getInputStream()));

out = new PrintWriter(s.getOutputStream());


e aqui segue o resto da minha fonte, que faz uso deste recurso:

String nickname = null;
           
            while(nickname == null || nickname.isEmpty()){
                nickname = JOptionPane.showInputDialog("Digite seu nickname");
            }

            enviarParaServidor(nickname);
           
            Thread t = new Thread() {
                @Override
                public void run() {
                    int tempoAux = 0;
                    while (tempoAux < tempoPing) {
                        enviarParaServidor("/ping");
                    }

                }
            };

            t.start();
           
           
            Thread tPing = new Thread() {
                @Override
                public void run() {
                    String txt = null;
                    try {
                        while ((txt = in.readLine()) != null) {
                            tela.getTxtMensagens().setText(tela.getTxtMensagens().getText().concat(txt));
                        }
                    } catch (SocketException e) {
                        System.out.println("Fim da execucao!");
                    }catch(IOException io){
                        io.printStackTrace();
                    }

                }
            };

            tPing.start();

//            String linha = null;
//            while(!(linha = teclado.nextLine()).equals("sair")){
//                out.println(linha);
//                out.flush();
//            }
           
            //s.close();

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
   
    private static void enviarParaServidor(String msg){
        out.println(msg);
        out.flush();
    }
   
    public static void enviarMensagem(){
        enviarParaServidor(tela.getTxtEntrada().getText());
       
        tela.getTxtEntrada().setText("");
        tela.getTxtEntrada().requestFocus();
    }
   
    private void atualizaLista(){
        out.println("/lista");
    }





Estou bem perdido de como posso fazer isso em python, alguém pode me ajudar?

Obrigado!

Fábio Cerqueira

unread,
May 17, 2013, 3:15:32 PM5/17/13
to python...@googlegroups.com
Gregorio,

acho que você está querendo escrever Java com Python, pq basta você abrir um socket em python que será possível escrever através do método send[1].

Na documentação oficial tem a referência[2] do módulo e também um how to[3] que tem um exemplo. No site da IBM tem um tutorial[4] que pode te ajudar também.


2013/5/17 Gregorio <nardini....@gmail.com>
--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com
 
---
Você está recebendo esta mensagem porque se inscreveu no grupo "python-brasil" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para python-brasi...@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
 
 



--
Fábio Cerqueira

Mário Neto

unread,
May 17, 2013, 3:30:36 PM5/17/13
to python...@googlegroups.com
Depois de ver os links do Fábio, pode ver tbm um projeto de um chat bem legal que tem versão com terminal e com GUI (Tkinter)
Att. Mário Araújo Chaves Neto
Programmer, Designer and U.I. Engineer

MBA in Design Digital - 2008 - FIC
Analysis and Systems Development - 2011 - Estácio
Design and Implementation of Internet Environments - 2003 - FIC
Reply all
Reply to author
Forward
0 new messages