자바 실험 8 네트워크 프로 그래 밍(뇌 실험 시리즈 없 음)
11713 단어 자바네트워크 프로 그래 밍실험무 뇌 실험 시리즈
² 실험 요구:
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){}
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.