JAVA实验报告 读取服务器端的窗口
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验3 读取服务端的窗口
1.相关知识点
网络套接字是基于TCP协议的有连接通信,套接字连接就是客户端的套接字和服务器端的套接字对象通过输入输出流连接在一起。服务器建立ServerSocket对象,ServerSocket对象负责等待客户端请求建立套接字连接,而客户端建立Socket对象向服务器端发出套接字请求。
可以使用Socket类不带参数的构造方法
public Socket()
创建一个套接字对象,该对象不请求任何连接。该对象再调用
public void connect(SocketAddress endpoint) throws IOException
请求和参数SocketAddress指定地址的套接字建立连接。为了使用connect方法,可以使用SocketAddress的子类:InetSocketAddress创建一个对象,InetSocketAddress的构造方法是:
public InetSocketAddress(InetAddress addr,int port)
2.实验目的
学会使用套接字读取服务器端的对象。
3.实验要求
客户端利用套接字连接将服务器端的JFrame对象读取到客户端。首先将服务器端的程序编译通过,并运行起来,等待请求套接字连接。
4.程序模板
//客户端模板client.java
import java.io.*;
import .*;
import java.util.*;
public class Client {
public static void main(String[] args) {
Scanner scanner =new Scanner (System. in);
Socket mysocket=null;
ObjectInputStream inObject=null;
ObjectOutputStream outObject=null;
Thread thread;
ReadWindow readWindow=null;
try{ mysocket=new Socket();
readWindow=new ReadWindow();
thread=new Thread(readWindow);
System.out.print("输入服务器的IP:");
String IP=scanner.nextLine();
System.out.print("输入端口号:");
int port=scanner.nextInt();
if(mysocket.isConnected()){}
else{
InetAddress address=InetAddress.getByName(IP); InetSocketAddress socketAddress=new InetSocketAddress(address,port);
mysocket.connect(socketAddress);
InputStream in=mysocket.getInputStream();
OutputStream out=mysocket.getOutputStream();
inObject=new ObjectInputStream(in);
outObject=new ObjectOutputStream(out);
readWindow.setObjectInputStream(inObject);
thread.start();
}
}
catch(Exception e){
S ystem.out.println("服务器已断开"+e);
}
}
}
class ReadWindow implements Runnable{
ObjectInputStream in;
public void setObjectInputStream(ObjectInputStream in){ this.in=in;
}
public void run(){
double result=0;
while(true){
try{
javax.swing.JFrame
window=(javax.swing.JFrame)in.readObject();
window.setTitle("这是从服务器上读取的窗口");
window.setVisible(true);
window.requestFocusInWindow();
window.setSize(600,800);
}
catch(Exception e){
System.out.println("与服务器已断开"+e);
break;
}
}
}
}
import java.io.*;
import .*;
import java.util.*;
import java.awt.*;
import javax.swing.*;
public class Server {
public static void main(String[] args) {
ServerSocket server=null;
ServerThread thread;
Socket you=null;
while(true){
try{server=new ServerSocket(4331);
}
catch(IOException e1){
System.out.println("正在监听");
}
try{you=server.accept();
System.out.println("客户的地址:"+you.getInetAddress());
}
catch(IOException e){
System.out.println("正在等待客户");
}
if(you!=null){
new ServerThread(you).start();
}
}
}
}
class ServerThread extends Thread{
Socket socket;
ObjectInputStream in=null;
ObjectOutputStream out=null;
JFrame window;
JTextArea text;
ServerThread(Socket t){