Network Programming Conceitos Básicos A classe InetAddress Programação de Socket TCP Programação de Socket UDP
Conceitos Básicos Internet e seus serviços TCP/IP IP UPD vs TCP
InetAddress Classe usada para manipular endereços IP Alguns métodos: public java.lang.string gethostname(); public java.lang.string gethostaddress(); public boolean equals(java.lang.object); public static InetAddress getbyaddress(string, byte[]) public static InetAddress getbyname(string) public java.lang.string tostring();
InetAddress Exemplo: Crie um programa onde o utilizador introduz um IP e o sistema retorna o domínio da máquina e vice versa.
import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.net.*; public class app1 extends JPanel implements ActionListener JLabel l1,l2; JTextField t1,t2,t3; JButton b1,b2,b3,b4; public app1() l1=new JLabel("IP"); l2=new JLabel("Dominio"); t1=new JTextField(10); t2=new JTextField(10); t3=new JTextField(10); b1=new JButton("Converter pra IP"); b2=new JButton("Converter pra Nome"); add(l1); add(t1); add(l2); add(t2); add(b1); add(b2); add(t3); b1.setbounds(100,100,20,10); b2.setbounds(90,100,100,10); b1.addactionlistener(this); b2.addactionlistener(this);
public static void main(string x[]) JFrame frm=new JFrame("Calculadora"); app1 obj=new app1(); frm.setcontentpane(obj); Container c=frm.getcontentpane(); c.setlayout(new FlowLayout()); frm.setvisible(true); frm.resize(400,500); public void actionperformed(actionevent e) if(e.getsource()==b2) try InetAddress addr=inetaddress.getbyname(t2.gettext()); String t=addr.gethostaddress(); t3.settext(t); if(e.getsource()==b1) try InetAddress addr2=inetaddress.getbyname(t1.gettext ()); String temp=addr2.gethostname(); t3.settext(temp); catch (Exception e5)system.out.print(e5.getmessage()); catch (Exception e4)system.out.print(e4.getmessage());
Programação de Socket TCP As seguintes classes e métodos são frequentemente usados: Socket Class getoutputstream() Cria um caminho para o envio de dados getinputstream() Cria um caminho para o receber dados ServerSocket Class Accept() - Aceitar conexões dos clientes (usado no servidor) Outros Métodos: Estas classes pertencem ao pacote: java.net.*
Outros Métodos ServerSocket: public java.net.inetaddress getinetaddress(); public int getlocalport(); public java.net.socketaddress getlocalsocketaddress(); public java.net.socket accept() throws java.io.ioexception; protected final void implaccept(java.net.socket) throws java.io.ioexception; public void close() throws java.io.ioexception; public java.nio.channels.serversocketchannel getchannel(); public boolean isbound(); public boolean isclosed();
Outros Métodos Socket: public boolean isconnected(); public boolean isbound(); public boolean isclosed(); public boolean isinputshutdown(); public boolean isoutputshutdown(); void setcreated(); void setbound(); void setconnected(); public java.net.inetaddress getinetaddress(); public java.net.inetaddress getlocaladdress(); public int getport(); public int getlocalport(); public java.net.socketaddress getremotesocketaddress(); public java.net.socketaddress getlocalsocketaddress(); public java.nio.channels.socketchannel getchannel();
Programação de Socket TCP As seguintes classes e métodos são frequentemente usados: DataOutputStreamClass writebytes(string) método para enviar dados usando o caminho outputstream criado. InputStreamReader Class readline() método para receber dados usando o caminho inputstream criado Estas classes pertencem ao pacote: java.net.*
Programação de Socket TCP Crie uma aplicação cliente-servidor, onde o cliente envia uma String para o servidor e este converte para maiusculos e re-envia para o cliente. Cliente import java.io.*; import java.net.*; import java.util.*; class client3 public static void main(string f[]) Scanner T=new Scanner(System.in); try Socket socket=new Socket("127.0.0.1",9000); System.out.println("Digite a mensagem a enviar"); String antiga=t.nextline(); String nova; DataOutputStream out=new DataOutputStream(socket.getOutputStream()); BufferedReader indoserver=new BufferedReader(new InputStreamReader(socket.getInputStream())); out.writebytes(antiga+'\n'); nova=indoserver.readline(); System.out.println("Mensagem recebida do servidor="+nova); socket.close(); catch (Exception e5)system.out.print(e5.getmessage());
Server Programação de Socket TCP import java.io.*; import java.net.*; class server3 public static void main(string f[]) try ServerSocket sc=new ServerSocket(9000); String client; String toclient; while(true) Socket sock=sc.accept(); BufferedReader docliente=new BufferedReader(new InputStreamReader(sock.getInputStrea m())); DataOutputStream Do; Do=new DataOutputStream(sock.getOutputStream()); client =docliente.readline(); System.out.println("MENSAGEM DO CLIENTE:"+client); System.out.println("Convertendo pra maiuscula e enviando pa cliente:"); toclient=client.touppercase(); Do.writeBytes(toclient+'\n'); //sock.close(); catch (Exception e5)system.out.print(e5.getmessage());
Programação de Socket TCP Agora converta a aplicação cliente para GUI, mas o cliente deve especificar o IP do servidor e por defeito a porta 9000 é usada para a comunicação.
Programação de Socket TCP if(e.getsource()==b1) try InetAddress addr=inetaddress.getbyname(tip.gettext()); String t=addr.gethostaddress(); Socket socket=new Socket(t,9000); DataOutputStream out=new DataOutputStream(socket.getOutputStream()); out.writebytes(t1.gettext()+'\n'); BufferedReader in=new BufferedReader(new InputStreamReader(socket.getInputStream())); String mensagem=in.readline(); t2.settext(mensagem); catch (UnknownHostException e5)system.out.print(e5.getmessage()); catch (Exception e4)system.out.print(e4.getmessage());
Programação de Socket UDP Conexão não é ponto a ponto Não ha certeza se os dados chegaram ou não Não é necessàrio haver conexão para usar sockets UDP Ex. Email Classes: DatagramSocket: usado para criar um caminho para enviar pacótes DatagramPacket: contem o dado a ser enviado (pacótes)
Programação de Socket UDP Ex. Desenvolva uma aplicação onde o cliente enviam um email ao servidor e este deve responder ao receber a mensagem.