搜索引擎技术基础-多线程编程实验报告
- 格式:doc
- 大小:322.50 KB
- 文档页数:8
昆明理工大学信息工程与自动化学院学生实验报告
(2011 —2012 学年第 1 学期)
课程名称:搜索引擎技术基础开课实验室:信自楼445 2011年 11月 9日
一、实验目的
1、掌握Socket通信原理。
2、掌握并实现多线程编程技术
二、实验原理及基本技术路线图(方框原理图)
无
三、上机平台、环境
PC机,MyEclipse 7.5版本
四、实验方法、步骤
1、通过Socket通信实现客户端与服务器端的通信。
2、实现服务器端对客户端的多线程技术。
五、实验过程原始记录(数据、图表、计算等)
1、通过Socket通信实现客户端与服务器端的通信。
Socket通信分为ServerSocket和Socket两部分,ServerSocket类提供TCP连接服务,Socket类提供进行通信的Socket对象。
建立TCP连接的各个步骤:分别是:
●服务器创建一个ServerSocket对象,指定端口号,ServerSocket
对象等待客户端的连接请求。
●客户端创建一个Socket对象,指定主机地址和端口号,向服务端发
出连接请求。
●服务端接收到客户端的连接请求,建立一条TCP连接,再创建一个
Socket对象与客户端的Socket对象进行通信。
●当一方决定结束通信,向对方发送结束信息;另一方接收到结束信
息后,双方分别关闭各自的TCP连接。
●ServerSocket对象停止等待客户端的连接请求。
作为服务器首先构造一个提供TCP连接服务的ServerSocket对象,然后指定其端口号,如果接收到客户端的连接请求,则建立一条TCP连接,再创建一个Socket对象与客户端的Socket对象进行通信,然后将从文件中读入的数据传送给客户端。由于服务器需要一直等待连接,所以需要监听端口请求。
源程序:
(1)服务器端 EchoServer.java
package test1;
import .* ;
public class EchoServer implements Runnable{
public static void main(String args[]) throws Exception {
// 所有异常抛出ServerSocket server = null ; // 定义ServerSocket类
Socket client = null ; // 表示客户端
server = new ServerSocket(8888) ; // 服务器在8888端口上监听
boolean f = true ; // 定义个标记位
while(f){
System.out.println("服务器已经运行,等待客户端连接。") ;
client = server.accept() ; // 得到连接,程序进入到阻塞状态
EchoThread thread=new EchoThread(client);
Thread echothread=new Thread(thread,"thread");
echothread.start();
}
client.close() ;
}
@Override
public void run() {
}
}
(2)客户端 EchoClient.java
import .* ;
import java.io.* ;
public class EchoClient{
public static void main(String args[]) throws Exception {
// 所有异常抛出Socket client = null ; // 表示客户端
client = new Socket("localhost",8888) ;
BufferedReader buf = null ; // 一次性接收完成
PrintStream out = null ; // 发送数据
BufferedReader input = null ; // 接收键盘数据
input = new BufferedReader(new
InputStreamReader(System.in)) ;
buf = new BufferedReader(new
InputStreamReader(client.getInputStream())) ;
out = new PrintStream(client.getOutputStream()) ;
boolean flag = true ; // 定义标志位
while(flag){
System.out.print("欢迎登陆:") ;
String str = input.readLine() ; // 接收键盘的输入信息
out.println(str) ;
}
buf.close() ;
client.close() ;
}
}
截图:
(1)开启服务器端等待客户端的连接:
(2)客户端通过8888端口与服务器端建立连接:
(3)客户端输入欲打开的文件名服务器端的响应:
(4)客户端接收到从服务器端发送来的文件内容: