System.out.println(arr[i]);
}
}
}
6、编写客户/服务器程序,客户端Client.java使用DatagramSocket对象将数据包发送到服务器,请求获取服务器端的图像(考生可自选图像文件)。
服务器端Server.java将图像文件包装成数据包,并使用DatagramSocket对象将该数据包发送到客户端。
首先将服务器端的程序编译通过,并运行起来,等待客户的请求。
(本题30分)
程序的运行效果如下图所示:
客户端
服务器端
服务端代码:
packagedatasocket;
importjava.io.*;
import.*;
publicclassFortuneServer1extendsThread{
DatagramSocketServerSocket;
publicFortuneServer1(){
super("FortuneServer1");
try{
ServerSocket=newDatagramSocket(1121);
System.out.println("FortuneServerupandrunning...");
}catch(SocketExceptione){
System.err.println("Exception:
couldn'tcreatedatagramsocket");
System.exit
(1);
}
}
publicvoidrun(){
if(ServerSocket==null)
return;
while(true){
try{
InetAddressaddress;
intport;
DatagramPacketpacket;
byte[]data=newbyte[16000];
packet=newDatagramPacket(data,data.length);
ServerSocket.receive(packet);
address=packet.getAddress();
port=packet.getPort();
FileinFile=newFile("D:
/q1.jpg");
FileInputStreaminStream=newFileInputStream(inFile);
if(inStream.read(data)<=0){
System.err.println("Error:
couldn'treadfortunes");
}
packet=newDatagramPacket(data,data.length,address,port);
ServerSocket.send(packet);
}catch(Exceptione){
System.err.println("Exception:
"+e);
e.printStackTrace();
}
}
}
publicstaticvoidmain(String[]args){
FortuneServer1server=newFortuneServer1();
server.start();
}
}
客户端代码:
packagedatasocket;
importjava.awt.Image;
importjava.awt.Toolkit;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjava.awt.event.WindowAdapter;
importjava.awt.event.WindowEvent;
import.*;
importjavax.swing.ImageIcon;
importjavax.swing.JButton;
importjavax.swing.JFrame;
importjavax.swing.JLabel;
publicclassFortuneClientextendsJFrameimplementsActionListener{
/**
*
*/
privatestaticfinallongserialVersionUID=2567338201545440156L;
Imageimage=null;
privateJButtonbutton=newJButton("获取图像");
privateJLabellabel=newJLabel();
publicFortuneClient(){
this.setTitle("Iamaclient");
this.setSize(500,500);
this.setLocationRelativeTo(null);
this.addWindowListener(newWindowAdapter(){
publicvoidwindowClosing(WindowEvente){
System.exit(0);
}
});
this.add(button,"North");
button.addActionListener(this);
this.setVisible(true);
}
publicvoidgetMessage(){
try{
DatagramSocketsocket;
DatagramPacketpacket;
byte[]data=newbyte[16000];
socket=newDatagramSocket();
packet=newDatagramPacket(data,data.length,InetAddress
.getByName("127.0.0.1"),1121);
socket.send(packet);
packet=newDatagramPacket(data,data.length);
socket.receive(packet);
image=Toolkit.getDefaultToolkit().createImage(packet.getData(),
0,packet.getData().length);
socket.close();
}catch(UnknownHostExceptione){
System.err.println("Exception:
hostcouldnotbefound");
}catch(Exceptione){
System.err.println("Exception:
"+e);
e.printStackTrace();
}
label=newJLabel(newImageIcon(image));
}
publicstaticvoidmain(Stringargs[]){
newFortuneClient();
}
publicvoidactionPerformed(ActionEvente){
//TODOAuto-generatedmethodstub
getMessage();
this.add(label);
label.setVisible(true);
this.setVisible(true);
}
}
1、某人有5张3分和4张5分的邮票,请编写一个程序,
计算由这些邮票中的1张或若干张可以得到多少种不同的邮资,
并按照邮资从小到大顺序显示。
(20分)
2、采用Java多线程技术编写程序,其中包括两个线程:
A和B,其中A线程准备休眠一小时,B线程每隔一秒输入3句“起床”后,
吵醒休眠的线程A。
(25分)
3、利用Java的GUI编程,编写一个窗体,
包含两个文本框和一个命令按钮。
其中一个文本框接收用户输入的一行字符串,
回车后在另一个文本框中重复输出三行,单击命令按钮可清空两个文本框的所有内容。
(25分)
4、编写一个Java应用程序,运行后,首先列出当前工作目录,
然后把当前目录下面的所有后缀为java的文件取出
(设置一个过滤器进行文件名后缀的过滤)。
(30分)
附加题:
5、使用堆栈结构输出,其中=2+2,=3,=8。
(20分)
6、访问Access2003数据库,在Access数据库中创建学生表(T_Student)表并配置ODBC驱动源,
学生表的结构和示例数据如下所示:
T_Student表:
字段名称说明数据类型约束备注
S_ID学号Integer主键
S_Name姓名Varchar(10)不允许空
S_Email邮箱Varchar(30)
S_Score英语成绩Integer
表数据示例:
S_IDS_NameS_EmailS_Score
1001JerryJerry@80
1002MikeMike@90
1003JohnJohn@78
使用Java语言编写程序,要求如下:
1)使用JDBC-ODBC桥驱动程序;
2)查询出表中所有记录,并按照主键升序显示。
参考提示代码:
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connectionconn=DriverManager.getConnection("jdbc:
odbc:
student","","");
(30分)
mportjava.util.*;
publicclassT1{
publicstaticvoidmain(Stringargs[]){
ArrayListal=newArrayList();
for(inti=0;i<=5;i++){
for(intj=0;j<=4;j++){
if((i*3+j*5)!
=0&&!
al.contains(i*3+j*5)){
al.add(i*3+j*5);
}
}
}
Collections.sort(al);
System.out.println("总共的邮资数是:
"+al.size());
System.out.println("他们从小到大的依次书序是:
");
for(Objecto:
al){
System.out.print(o+"-");
}
System.out.println("\b");
}
}
2importjava.util.*;
publicclassT2{
publicstaticvoidmain(String[]args){
Objecto1=newObject();
ThreadTwot2=newThreadTwo(o1);
ThreadOnet1=newThreadOne(o1,t2);
t1.start();//为确保t1先运行我让t2在t1的run方法里面启动
}
staticclassThreadOneextendsThread{
Objecta;
Threadt;
publicThreadOne(Objecto1,Threadt2){
a=o1;
t=t2;
}
publicvoidrun(){
t.start();
synchronized(a){
try{
System.out.println("我是A:
我要先睡一个小时");
a.wait(1000*3600);
System.out.println("我是A:
我被吵醒了");
}
catch(Exceptione){e.printStackTrace();}
}
}
}
staticclassThreadTwoextendsThread{
Objecta;
publicThreadTwo(Objecto1){
a=o1;
}
publicvoidrun(){
booleanflag=true;
Scannersc=newScanner(System.in);
ArrayListal=newArrayList();
try{
synchronized(a){
while(flag){
sleep(1000);
System.out.println("我是线程B:
起床");
al.add
(1);
System.out.println();
if(al.size()==3){
a.notify();
flag=false;
}
}
}
}catch(Exceptione){
e.printStackTrace();
}
}
}
}
3
importjava.awt.GridLayout;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjava.awt.event.KeyEvent;
importjava.awt.event.KeyListener;
importj