计算机网络程序设计
实验报告
实验题目: 多线程服务器
学 院 计算机学院
专 业 网络工程
班 级
姓 名
学 号
2013年 5 月 16 日
一、实验名称
多线程服务器
二、实验目的和要求
实验目的
?? 熟悉和掌握线程编程的基本方法和步骤;
? ?掌握多线程服务器的开发方法
要求完成
使用任意网络编程语言( Java 、 C 、 VB 、 Delphi 等)编写网络选课模拟程序,它由 client 和 server 两部分组成, client 和 server 之间的通信基于 TCP 协议,并且实现 NCSP 应用层协议( Network-based Course Selection Protocol )。
三、开发环境
操作系统:windows7旗舰版
编程工具:Eclipse
集成开发环境:JDK
主机IP:192.168.1.102
四、实验内容和结果
1、程序整体功能
客户端从命令行输入一个半径值并传送到服务器。服务器根据这个半径值,计算出圆面积发送给客户,客户端显示这个值;客户端输入“bye”命令将结束通信。
2.重要类
在使用ServerThread的时候需要继承Thread,并且new一个实例出来,调用 start( 方法即可以启动一个线程。
在创建的 Thread 类的子类中重写 run( ,加入线程所要执行的代码
调用start( 方法后并不立即执行多线程代码,而是使得该线程变为可运行状态(runnable
3.程序的运行和测试结果
4.程序清单
//客户端程序
import java.io.*;
import java.net.*;
public class Client {
private static Socket outFromServer;
public static void main (String[] arg{
try{
//
Socket connectToServe=new Socket ("localhost",5800;
//
DataInputStream inFromServer =new DataInputStream (connectToServe.getInputStream(;
//
DataOutputStream outToServer =new DataOutputStream (connectToServe.getOutputStream(;
System.out.println("输入半径值:";
String outstr,inStr;
boolean goon=true;
BufferedReader buf=new BufferedReader (new InputStreamReader (System.in ;
//
while(goon{
outstr=buf.readLine(;//
outToServer.writeUTF(outstr; //
outToServer.flush(;//
inStr= inFromServer.readUTF(;
if (!inStr.equals("bye"
System.out.println("从服务器返回的结果是:"+inStr;
else
goon=false;
}
inFromServer.close(;
outToServer.close(;
Socket connectToServer;
connectToServe.close(;
}catch(IOException e{
e.printStackTrace(;
}
}
}
//服务器程序
import java.io.*;
import java.net.*;
class ServerThread extends Thread {
private Socket connectToClient;
private DataInputStream infromClient;
private DataOutputStream outtoClient;
//
public ServerThread (Socket socket throws IOException {
super(;
connectToClient=socket;
infromClient=new DataInputStream (connectToClient.getInputStream(;
outtoClient=new DataOutputStream (connectToClient.getOutputStream(;
start(;//
}
//
public void run({
try{
String Str;
double r