网络编程的实例

来源:互联网 发布:湖泊数据下载 编辑:程序博客网 时间:2024/05/23 19:22
/*2、创建客户/服务器应用,客户端发送"Time Require"到服务器,服务器返回当前服务器的日期和时间,服务器能同时处理多个客户请求。  */import java.net.*;import java.io.*;import java.util.*;public class TCP{public static void main(String[] args) throws Exception{new Thread(new TServer()).start();}}class TClient {public static void main(String[] args) throws Exception{//发送数据过程Socket s = null;for (int i = 0; i < 5; i++){s = new Socket("172.18.177.222", 52088);String c_data = "Time Require........." + (i+1);OutputStream out = s.getOutputStream();out.write(c_data.getBytes());//把数据写入通道//接收服务器返回的数据InputStream in = s.getInputStream();byte[] buf = new byte[1024];int len = in.read(buf);//读取通道里面返回的数据String s_data = new String(buf, 0, len);System.out.print(s_data);}//关闭资源s.close();} }class TServer implements Runnable{private ServerSocket ss;public TServer() throws Exception{this.ss = new ServerSocket(52088);}public void run(){Socket s = null;try{while(true){//接收客户端发来的数据s = ss.accept();System.out.println(s.getInetAddress().getHostAddress() + "..........Connect");InputStream in = s.getInputStream();byte[] buf = new byte[1024];int len = in.read(buf);String c_data = new String(buf, 0, len);//客户端发过来的数据转换成字符串System.out.println(c_data);//返回数据给客户端OutputStream out = s.getOutputStream();Calendar data = Calendar.getInstance();//获取时间Date d = data.getTime();String s_data = "服务端 : " + d;out.write(s_data.getBytes());//返回数据}}catch (Exception e){e.printStackTrace();}//关闭资源//s.close();//ss.close();}}



/*1、采用UDP协议,编写一个Java网络应用程序,该应用分服务器端程序和客户端程序两部分。客户端指定一个服务器上的文件名,让服务器发回该文件的内容,或者提示文件不存在。(20分)(服务端程序和客户端程序分别命名为Server.java和Client.java)*/import java.net.*;import java.io.*;class Client{    public static void main(String[] args) throws Exception    {//发送数据 给定文件名         DatagramSocket ds = new DatagramSocket();  byte[] buf = "TCP.java".getBytes(); DatagramPacket dp = new DatagramPacket(buf, buf.length, InetAddress.getByName("172.18.177.222"), 52099); ds.send(dp);//接收数据String data = null; ds = new DatagramSocket(52010); BufferedWriter bufw = new BufferedWriter(new FileWriter("Copy.txt"));while(true){  int i = 0; byte[] buf1 = new byte[1024]; dp = new DatagramPacket(buf1, buf1.length); ds.receive(dp); data = new String(dp.getData(), 0, dp.getLength()); bufw.write(data); bufw.newLine(); bufw.flush(); System.out.println(data + "--------->" + dp.getLength()); i++; if (i == 100)break;} ds.close();    } }class Server{public static void main(String[] args) throws Exception{//接收数据DatagramSocket ds = new DatagramSocket(52099);byte[] buf = new byte[1024];DatagramPacket dp = new DatagramPacket(buf, buf.length);ds.receive(dp);//返回数据String data = new String(dp.getData(), 0, dp.getLength());System.out.println(data);BufferedReader burd = new BufferedReader(new FileReader(data));String s_data = null;ds = new DatagramSocket();while ((s_data = burd.readLine()) != null){byte[] buf1 =s_data.getBytes();dp = new DatagramPacket(buf1, buf1.length, InetAddress.getByName("172.18.177.222"), 52010);ds.send(dp);}ds.close();}}


/*2、编写客户/服务器程序,客户端Client.java使用DatagramSocket对象将数据包发送到服务器,请求获取服务器端的图像(考生可自选图像文件)。服务器端Server.java将图像文件包装成数据包,并使用DatagramSocket对象将该数据包发送到客户端。首先将服务器端的程序编译通过,并运行起来,等待客户的请求。(本题30分)程序的运行效果如下图所示:*/import javax.imageio.*;import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.*;import java.net.*;import java.awt.image.*;public class UdpPicture extends JFrame implements ActionListener{JPanel p1, p2;JLabel p = new JLabel("");JButton b1;public UdpPicture(){super("图片获取【天华】");p1 = new JPanel();p2 = new JPanel();p2.setLayout(new BorderLayout());p1.setLayout(new BorderLayout());b1 = new JButton("获取图片");p1.add(b1);p2.add(p);add(p1, BorderLayout.NORTH);add(p2, BorderLayout.CENTER);setSize(432,355);setVisible(true);setDefaultCloseOperation(2);setLocationRelativeTo(null);b1.addActionListener(this);    }    public static void main(String[] args)     {new UdpPicture();        } public void actionPerformed(ActionEvent e){String str = null;if ((JButton)e.getSource() == b1){ImageIcon picture = null;if(Static.num == 0){try{PClient c = new PClient();c.c_start();Static.str = c.getName();Static.num = 1;//显示图片picture = new ImageIcon(Static.str);File file = new File(Static.str);//获取图片路径FileInputStream fis = new FileInputStream(file);BufferedImage bufferedImg = ImageIO.read(fis);int imgWidth = bufferedImg.getWidth();int imgHeight = bufferedImg.getHeight();setSize(imgWidth,imgHeight);p.setIcon(picture);}catch (Exception e1){System.out.println("出错");}}else if(Static.num == 1){picture = new ImageIcon(Static.str);p.setIcon(picture);}}}}class PClient{private String name;public static void sop(Object obj){System.out.println(obj);}public static void sopn(Object obj){System.out.print(obj);}public String getName(){return this.name;}public void setName(String name){this.name = name;}public void c_start() throws Exception{   //发送请求DatagramSocket ds = new DatagramSocket();byte[] c_buf = "1.jpg".getBytes();DatagramPacket dp = new DatagramPacket(c_buf, c_buf.length, InetAddress.getByName("127.0.0.1"), 55665);ds.send(dp);//接收请求ds = new DatagramSocket(55666);byte[] s_buf = new byte[1024];String str = "4.jpg";this.setName(str);FileOutputStream fos = new FileOutputStream(str);while(true){dp = new DatagramPacket(s_buf, s_buf.length);ds.receive(dp);fos.write(dp.getData(), 0, dp.getLength());if(dp.getLength() < 1024) break;}ds.close();}}class PServer //implements Runnable{public static void main(String[] args) throws Exception{    //接收客户端的请求DatagramSocket  ds = new DatagramSocket(55665);byte[] buf = new byte[1024];DatagramPacket dp = new DatagramPacket(buf, buf.length);ds.receive(dp);String str = new String(dp.getData(), 0, dp.getLength());sop(str);//发送数据包ds = new DatagramSocket();buf = new byte[1024];FileInputStream fis = new FileInputStream(str);//读取文件名int len;while((len = fis.read(buf)) != -1){dp = new DatagramPacket(buf, len, InetAddress.getByName("127.0.0.1"), 55666);ds.send(dp);}buf = "886".getBytes();dp = new DatagramPacket(buf, buf.length, InetAddress.getByName("127.0.0.1"), 55666);ds.send(dp);ds.disconnect();ds.close();}public static void sop(Object obj){System.out.println(obj);}public static void sopn(Object obj){System.out.print(obj);}}class Static{public static int num = 0; public static String str = null;}


第一个弄了我很久啊 唉, 醉了。 记录一下。。。

0 0