上机实践10 JAVA 中的网络编程
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
add(area,BorderLayout.CENTER); add(p,BorderLayout.NORTH); setBounds(60,60,360,300); setVisible(true); validate(); addWindowListener(new WindowAdapter()
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);
服务器端模板:Server.java
import java.io.*; import java.net.*; import java.util.*; import java.awt.*; public class Server { public static void main(String args[])
服务器端模板:Server.java 答案:
【代码 1】: new ServerSocket(4331); 【代码 2】: server.accept(); 【代码 3】: socket.getOutputStream() 【代码 4】: socket.getInputStream()
2.模板代码
客户端模板:Client.java
"包含的文件名字:"+fileName); area.append("\n 文件的内容如下:"); 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)
try{ thread.start();
} catch(Exception ee)
{ text.setText("我正在读取"+url); } } public void run() { try { int n=-1;
area.setText(null); String name=text.getText().trim(); 【代码 1】 //使用字符串 name 创建 url 对象 String hostName=【代码 2】 //url 调用 getHost() int urlPortNumber=【代码 3】 //url 调用 getPort() String fileName=【代码 4】 //url 调用 getFile() InputStream in=【代码 5】 //url 调用方法返回一个输入流 area.append("\n 主机:"+hostName+"端口:"+urlPortNumber+
{ text.setText(""+e1); return;
} }
实验 2 使用套接字读取服务器端对象
客户端模板:Client.java 答案:
【代码 1】: new InetSocketAddress(address,4331); 【代码 2】: socket.connect(socketAddress); 【代码 3】: socket.getInputStream() 【代码 4】: socket.getOutputStream()
服务器端模板:Server.java 答案:
【代码 1】: new DatagramSocket(1234); 【代码 2】: pack.getAddress(); 【代码 3】: new DatagramPacket(b,n,address,5678); 【代码 4】: new DatagramSocket(); 【代码 5】: mailSend.send(data); 【代码 6】: new DatagramPacket(end,end.length,address,5678); 【代码 7】: new DatagramSocket(); 【代码 8】: mailSend.send(data);
{ public void windowClosing(WindowEvent e) { System.exit(0); }
}); } public void actionPerformed(ActionEvent e) {
if(!(thread.isAlive())) thread=new Thread(this);
try{ out.writeObject(text); }
catch (IOException e) { System.out.println("客户离开"); }
}
}
实验 3 基于 UDP 的图像传输
客户端模板:Client.java 答案:
【代码 1】: new DatagramPacket(b,b.length,address,1234); 【代码 2】: new DatagramSocket(); 【代码 3】: mailSend.send(data); 【代码 4】: mailReceive=new DatagramSocket(5678);
public ImageCanvas() { setSize(200,200); } public void paint(Graphics g) { if(image!=null)
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()
2.模板代码
ReadFile.java
import java.awt.*; import java.awt.event.*; import java.net.*; import java.io.*; public class ReadURLSource { public static void main(String args[])
try { out=new ObjectOutputStream(【代码 3】); //socket 返回输出流。 in=new ObjectInputStream(【代码 4】); //socket 返回输入流。
} catch (IOException e)
{} } public void run() { TextArea text=new TextArea("你好,我是服务器",12,12);
import java.net.*; import java.io.*; import java.awt.*; import java.awt.event.*; class Client extends Frame implements Runnable,ActionListener { Button connection;
2.模板代码
客户端模板:Client.java
import java.net.*; import java.awt.*; import java.awt.event.*; import java.io.*; class ImageCanvas extends Canvas { Image image=null;
{ new NetWin(); } }
class NetWin extends FrBiblioteka Baidume implements ActionListener,Runnable { Button button;
URL url; TextField text; TextArea area; byte b[]=new byte[118]; Thread thread; NetWin() { text=new TextField(20);
} } class ServerThread extends Thread { Socket socket;
ObjectInputStream in=null; ObjectOutputStream out=null; String s=null; ServerThread(Socket t) { socket=t;
{ 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=【代码 1】//创建端口为 4331、地址为
上机实践 10 Java 中的网络编程
实验 1 读取服务器端文件
1.答案:
【代码 1】: url=new URL(name); 【代码 2】: url.getHost(); 【代码 3】: url.getPort(); 【代码 4】: url.getFile(); 【代码 5】: url.openStream();
//address 的 socketAddress 【代码 2】 //socket 建立和 socketAddress 的连接呼叫。
in =new ObjectInputStream(【代码 3】); //socket 返回输入流 out = new ObjectOutputStream(【代码 4】); //socket 返回输出流 thread.start(); } } catch (Exception ee){} } } public static void main(String args[]) { Client win=new Client(); } }
{ ServerSocket server=null; ServerThread thread; Socket you=null; while(true) { try{ server=【代码 1】//创建在端口 4331 上负责监听的 ServerSocket 对象 } catch(IOException e1) { System.out.println("正在监听"); } try{ you=【代码 2】 // server 返回和客户端相连接的 Socket 对象 System.out.println("客户的地址:"+you.getInetAddress()); } catch (IOException e) { System.out.println("正在等待客户"); } if(you!=null) { new ServerThread(you).start(); } else{ continue; } }