자바 실험 8 네트워크 프로 그래 밍(뇌 실험 시리즈 없 음)

1.서버 쪽 파일 읽 기.
²  실험 요구:
URL 대상 을 만 든 다음 URL 대상 을 입력 흐름 으로 되 돌려 주 고 이 입력 흐름 을 통 해 URL 에 포 함 된 자원 파일 을 읽 습 니 다.
package lzy;

import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;
public class ReadURLSource
{  
	public static void main(String args[])
   { 
	new NetWin();
   }
}

class NetWin extends Frame implements ActionListener,Runnable
{  
	Button button;

   URL url;
   TextField text;
   TextArea area; 
   byte b[]=new byte[118];
   Thread thread;
   NetWin()
   { 
	   text=new TextField(20);
      area=new TextArea(12,12);
      button=new Button("  ");
      button.addActionListener(this);
      thread=new Thread(this);
      Panel p=new Panel();
      p.add(new Label("    :"));
      p.add(text); 
      p.add(button);
      add(area,BorderLayout.CENTER);
      add(p,BorderLayout.NORTH);
      setBounds(60,60,360,300);
      setVisible(true);
      validate();
      addWindowListener(new WindowAdapter()
                      {   public void windowClosing(WindowEvent e)
                           { 
                    	  System.exit(0);
                           }
                           
                      });
   }
   public void actionPerformed(ActionEvent e)
   { 
      if(!(thread.isAlive())) 
         thread=new Thread(this);
      try{
           thread.start();
         }
      catch(Exception ee)
         { text.setText("     "+url);
         }
   }
   public void run()
   {    try {    int n=-1;
                 area.setText(null);
                 String name=text.getText().trim();
                 url=new URL(name);    					//     name  url  
                 String hostName=url.getHost();     	//url  getHost()
                 int urlPortNumber=url.getPort();      //url  getPort() 
                 String fileName=url.getFile(); 		 //url  getFile()
                 InputStream in=url.openStream();		//url           
                 area.append("
:"+hostName+" :"+urlPortNumber+ " :"+fileName); area.append("
:"); while((n=in.read(b))!=-1) { String s=new String(b,0,n); area.append(s); } } catch(MalformedURLException e1) { text.setText(""+e1); return; } catch(IOException e1) { text.setText(""+e1); return; } } }

2.소켓 을 사용 하여 서버 의 대상 을 읽 습 니 다.
²  실험 요구:
클 라 이언 트 는 서버 쪽 의 텍스트 영역 대상 을 클 라 이언 트 에 읽 고 창 에 추가 합 니 다.먼저 서버 쪽 의 프로그램 을 컴 파일 하고 실행 하 며 고객 의 호출 을 기다 리 고 있 습 니 다.
클 라 이언 트 템 플 릿:Client.java
//jdk 버 전 문제 주의...너무 낮 으 면 잘못 보고 할 거 야...
package lzy;

import java.net.*;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
class Client extends Frame implements Runnable,ActionListener
{  Button connection;
   Socket socket=null;
   ObjectInputStream in=null; 
   ObjectOutputStream out=null;
   Thread thread; 
   public  Client()
   {  socket=new Socket();              
      connection=new Button("     ,       ");
      add(connection,BorderLayout.NORTH);
      connection.addActionListener(this);
      thread = new Thread(this);
      setBounds(100,100,360,310);
      setVisible(true);
      addWindowListener(new WindowAdapter()
                          { public void windowClosing(WindowEvent e)
                            {  System.exit(0);
                            }  
                          }
                       );
   }
   public void run()
   {  while(true)
       {   try{  TextArea text=(TextArea)in.readObject();  
                 add(text,BorderLayout.CENTER);
                 validate();
              }
           catch(Exception e) 
               { break;
               } 
       }
  }
  public void actionPerformed(ActionEvent e)
  { if(e.getSource()==connection)
    {  try
         {  if(socket.isConnected())
              {
              } 
            else
              { InetAddress  address=InetAddress.getByName("127.0.0.1");
                InetSocketAddress socketAddress=new  ServerSocket(4331);   //     4331、   address socketAddress
                server.accept();    						//socket   socketAddress     。
             in =new ObjectInputStream(socket.getOutputStream()); 		//socket     
             out = new ObjectOutputStream(socket.getInputStream()); 	//socket     
                thread.start();
              }
         } 
        catch (Exception ee){}
    }
  }
  public static void main(String args[])
  {   
	  Client win=new  Client();
  }
}

서버 쪽 템 플 릿:Server.java
package lzy;

import java.io.*;
import java.net.*;
import java.util.*;
import java.awt.*;
public class Server
{  public static void main(String args[])
   { 
	InetSocketAddress server=null;
      ServerThread thread;
      Socket you=null;
      while(true) 
       { 
    	  try{  
    	   server=new InetSocketAddress(address,4331);    //     4331       ServerSocket  
              }
          catch(IOException e1) 
             {  System.out.println("    ");   
             } 
          try{  you=socket.connect(socketAddress);    // server          Socket  
                System.out.println("     :"+you.getInetAddress());
             }
         catch (IOException e)
             {  System.out.println("      ");
             }
         if(you!=null) 
             {  new ServerThread(you).start();  
             }
         else{  continue;
             }
      }
   }
}
class ServerThread extends Thread
{  Socket socket;
   ObjectInputStream in=null; 
   ObjectOutputStream out=null;
   String s=null;
   ServerThread(Socket t)
   {  socket=t;
      try  {
    	     out=new ObjectOutputStream(socket.getInputStream());    //socket     。
             in=new ObjectInputStream(socket.getOutputStream());      //socket     。
           }
      catch (IOException e)
          {}
   }  
   public void run()        
   {  TextArea text=new TextArea("  ,     ",12,12);
      try{  out.writeObject(text);
         }
      catch (IOException e) 
         {   System.out.println("    ");
         }
   } 
}

3.UDP 기반 이미지 전송.
²  실험 요구:
클 라 이언 트/서버 프로그램 을 작성 합 니 다.클 라 이언 트 는 DatagramSocket 대상 을 사용 하여 패 킷 을 서버 에 보 내 고 서버 쪽 의 그림 을 가 져 오 라 고 요청 합 니 다.서버 측은 이미지 파일 을 패 킷 으로 포장 하고 DatagramSocket 대상 을 사용 하여 이 패 킷 을 클 라 이언 트 에 보 냅 니 다.먼저 서버 쪽 의 프로그램 을 컴 파일 하고 실행 하여 고객 의 요청 을 기다 리 십시오.
클 라 이언 트 템 플 릿:Client.java
package lzy;

import java.net.*;
import java.awt.*; 
import java.awt.event.*;
import java.io.*;
class ImageCanvas extends Canvas
{ 
	Image image=null;
   public ImageCanvas()
   {  
	   setSize(200,200);
   }
   public void paint(Graphics g)
   { 
	   if(image!=null)
      g.drawImage(image,0,0,this);
   }
   public void setImage(Image image)
   {  
	   this.image=image;
   }
}
class Client extends Frame implements Runnable,ActionListener
{ 
	Button b=new Button("    ");
   ImageCanvas canvas;
   Client()
   { 
	   super("I am a client");
      setSize(320,200);
      setVisible(true);
      b.addActionListener(this);
      add(b,BorderLayout.NORTH);
      canvas=new ImageCanvas();
      add(canvas,BorderLayout.CENTER);
      Thread thread=new Thread(this);
      validate(); 
      addWindowListener(new WindowAdapter()
                          { public void windowClosing(WindowEvent e)
                            { System.exit(0);
                            }  
                          }
                       );
      thread.start();                              
   }
   public void actionPerformed(ActionEvent event)      
   { 
	   byte b[]="    ".trim().getBytes();
      try{   InetAddress address=InetAddress.getByName("127.0.0.1");
            DatagramPacket data=new DatagramPacket(b,b.length,address,1234); //     ,               address 1234,        b      。
            DatagramSocket mailSend=new DatagramSocket(); //         DatagramSocket  。
            mailSend.send(data);                   // mailSend    data。
          }
      catch(Exception e){}     
   } 
  public void run()                              
   {
	  DatagramPacket pack=null;
      DatagramSocket mailReceive=null;
      byte b[]=new byte[8192];
      ByteArrayOutputStream out=new ByteArrayOutputStream();
      try{    
    	  pack=new DatagramPacket(b,b.length);
      mailReceive=new DatagramSocket(5678); //     5678        DatagramSocket  。
         }
      catch(Exception e){} 
      try{   while(true)   
              { 
    	  mailReceive.receive(pack); 
                 String gmessage=new String(pack.getData(),0,pack.getLength());
                 
                 if(gmessage.startsWith("end"))
                   { 
                	 break;
                   }
                 out.write(pack.getData(),0,pack.getLength());
              }
           byte imagebyte[]=out.toByteArray();
           out.close();
           Toolkit tool=getToolkit();
           Image image=tool.createImage(imagebyte);
           canvas.setImage(image);
           canvas.repaint();
           validate();
         }
      catch(IOException e){}
   }
 public static void main(String args[])
   {
	 new Client();
   }
}

서버 쪽 템 플 릿:Server.java
package lzy;

import java.net.*;
import java.io.*;
public class Server
{ 
   public static void main(String args[])
   { 
	   DatagramPacket pack=null;
      DatagramSocket mailReceive=null;
      ServerThread thread;
      byte b[]=new byte[8192];
      InetAddress address=null;
      pack=new DatagramPacket(b,b.length);
       while(true) 
       {   try{ 
    	   mailReceive=new DatagramSocket(1234);//     1234        
                                    //DatagramSocket  。
              }
          catch(IOException e1) 
             { 
        	  System.out.println("    ");   
             } 
          try{   
        	  mailReceive.receive(pack); 
                address=pack.getAddress(); //pack  InetAddress  。
                System.out.println("     :"+address);
             }
         catch (IOException e) { }
         if(address!=null) 
             {  
        	 new ServerThread(address).start();   
             }
         else 
             {   continue;
             }
      }
   }
}
class ServerThread extends Thread
{  
	InetAddress address;
   DataOutputStream out=null;
   DataInputStream  in=null;
   String s=null;
   ServerThread(InetAddress address)
   {  this.address=address;
   }  
   public void run()                                
   {  
	   FileInputStream in;
      byte b[]=new byte[8192];
      try{  
    	   in=new  FileInputStream ("a.jpg");
            int n=-1;
            while((n=in.read(b))!=-1)
            {  DatagramPacket data=new DatagramPacket(b,n,address,5678);//     ,          address 5678,        b   n   
              DatagramSocket mailSend=new DatagramSocket(); //       DatagramSocket  
              mailSend.send(data);                   // mailSend    data
            }
            in.close();
            byte end[]="end".getBytes();
            DatagramPacket data=new DatagramPacket(end,end.length,address,5678); //     ,          address 5678,        end      
            DatagramSocket mailSend=new DatagramSocket();//         DatagramSocket  
            mailSend.send(data);                     // mailSend    data
         }
      catch(Exception e){}
   }
}

좋은 웹페이지 즐겨찾기