实验四-基于Socket的CS程序
淮海工学院计算机工程学院
实验报告书
课程名: 计算机网络
题 目: 基于Socket的C/S程序开发
班 级: G
学 号:
姓 名:
实验目的
理解和巩固传输层与套接字的基本知识,掌握利用套接字实现面向连接的数据传输的一般方法,深入理解客户/服务器工作模式,学会简单的客户/服务器程序的开发。
实验内容
利用Java语言提供的Socket技术,建立一个C/S模式的应用,允许客户端用户输入2个整数,服务器端接收这2个整数,并计算出它们的和、差、积、商,最后送回客户端。
服务器端ServerSocket类(java.net.ServerSocket )
构造方法:public ServerSocket(int?port) throws IOException——S_1
接受连接请求:public Socket accept() throws IOException——S_2
客户端Socket类(java.net.Socket)
构造方法:public Socket(String?host, int?port) throws UnknownHostException, IOException ——C_1
读取数据:public InputStream getInputStream() throws IOException——S_5,C_3
发送数据:public OutputStream getOutputStream() throws IOException——S_3,C_4
服务器端编程
创建ServerSocket对象
ServerSocket server=new ServerSocket(8000);
监听来自客户端的请求
Socket linkSocket=server.accept();
与客户端进行通信
利用linkSocket.getInputStream() 接收客户端数据;
对读取的数据进行加、减、乘、除计算;
利用linkSocket.getoutputStream() 向客户端发送计算结果;
监听结束时关闭服务器
server.close();
客户端编程
建立连接
Socket client=new Socket(“ServerComputerName”, 8000);
与服务器进行通信
从键盘读入两个整数;
利用client.getoutputStream() 向服务器端发送数据;
利用client.getInputStream() 接收服务器端结果;
显示从服务器端得到的结果;
释放连接
Client.close();
要求:在一台主机上安装并运行服务器端程序,在另一台计算机上安装并运行客户端程序,测试所编写的程序能否完成规定的功能。
实验步骤与源程序
源程序:
服务器:
import java.net.*;
import java.util.*;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Server
{
public Server()
{ ServerSocket server=null;
Server_thread thread;
Socket you=null;
while(true)
{
try
{ server=new ServerSocket(8755); }
catch(IOException e1)
{ System.out.println("正在监听");} //ServerSocket对象不能重复创建
try
{ System.out.println("等待客户呼叫");
you=server.accept();
System.out.println("已连接到客户");
System.out.println("客户的地址:"+you.getInetAddress()); }
catch (IOException e)
{ System.out.println("正在等待客户"); }
if(you!=null)
{ new Server_thread(you).start();} //为每个客户启动一个专门的线程
}
}
public static void main(String args[])
{ new Server(); }
}
class Server_thread extends Thread
{
S