i++){
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。
importjavax.swing.JTextArea。
importjavax.swing.JButton。
importjavax.swing.JFrame。
importjavax.swing.JTextField。
publicclassT3{
JFrameframe。
JTextFieldjtf。
JTextAreajtf2。
JButtonbutton。
publicT3(){
frame=ne