Вы находитесь на странице: 1из 16

Network Programming

Conceitos Bsicos A classe InetAddress Programao de Socket TCP Programao de Socket UDP

Conceitos Bsicos

Internet e seus servios

TCP/IP

IP
UPD vs TCP

InetAddress
Classe usada para manipular endereos IP

Alguns mtodos: 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 domnio da mquina e vice versa.

import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.net.*;


public class app1 extends JPanel implements ActionListener {

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);

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.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);
}catch (Exception e4){System.out.print(e4.getMessage());} }

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());} }

Programao de Socket TCP


As seguintes classes e mtodos so frequentemente usados:

getOutputStream() Cria um caminho para o envio de dados

Socket Class
getInputStream() Cria um caminho para o receber dados

ServerSocket Class

Accept() - Aceitar conexes dos clientes (usado no servidor)

Outros Mtodos:

Estas classes pertencem ao pacote: java.net.*

Outros Mtodos
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 Mtodos
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();

Programao de Socket TCP


As seguintes classes e mtodos so frequentemente usados:

DataOutputStreamClass

writeBytes(String) mtodo para enviar dados usando o caminho outputStream criado.

InputStreamReader Class

readLine() mtodo para receber dados usando o caminho inputStream criado

Estas classes pertencem ao pacote: java.net.*

Programao de Socket TCP


Crie uma aplicao 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{ 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());} } }

Socket socket=new Socket("127.0.0.1",9000); System.out.println("Digite a mensagem a enviar"); String antiga=T.nextLine(); String nova;

Server

Programao de Socket TCP


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());} }

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;

Programao de Socket TCP


Agora converta a aplicao cliente para GUI, mas o cliente deve especificar o IP do servidor e por defeito a porta 9000 usada para a comunicao.

Programao 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());} }

Programao de Socket UDP


Conexo no ponto a ponto No ha certeza se os dados chegaram ou no No necessrio haver conexo para usar sockets UDP Ex. Email

Classes:

DatagramSocket: usado para criar um caminho para enviar pactes DatagramPacket: contem o dado a ser enviado (pactes)

Programao de Socket UDP


Ex. Desenvolva uma aplicao onde o cliente enviam um email ao servidor e este deve responder ao receber a mensagem.

Вам также может понравиться