socket的cs通信c语言例程,实验四-基于Socket的CS程序.doc

实验四-基于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

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值