/*
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;
}
第一个弄了我很久啊 唉, 醉了。 记录一下。。。