实验四 面向SOCKET编程

来源:互联网 发布:化妆品网络销售话术 编辑:程序博客网 时间:2024/06/03 16:18

实验四 面向SOCKET编程

实验目的:

1、理解SOCKET的基本原理;

2、学会面向SOCKET编程的代码编写及理解各语句内容;

3、掌握面向SOCKET编程的具体应用。

实验要求:

1、建立两个独立的面向SOCKET编程的JAVA工程,用于服务器和客户端系统;

2、建立SOCKETJAVA类,并能正确运行且能实现SOCKET通信;

3、对JAVA类的功能进行拓广,使SOCKET用于某一具体的应用。

实验内容:

1、建立服务器端工程和JAVA类,类程序的原代码为:

import java.io.*;

import java.net.*;

public class SocketServer {

  // 为这个Socket选择一个断口8080:

  public static final int PORT = 8080;

  public static void main(String[] args) throws IOException {

    ServerSocket s = new ServerSocket(PORT);

    System.out.println("开始: " + s);

    try {

      // 生成一个Socket等待连接请求

      Socket socket = s.accept();

      try {

        System.out.println(

            "接受连接请求: " + socket);

        BufferedReader in =

            new BufferedReader(

            new InputStreamReader(

            socket.getInputStream()));

        // 定义一个PrintWriter对象写输出流

        PrintWriter out =

            new PrintWriter(

            new BufferedWriter(

            new OutputStreamWriter(

            socket.getOutputStream())), true);

        while (true) {

          String str = in.readLine();

          if (str.equals("END")) {

            break;

          }

          System.out.println("自客户端: " + str);

          out.println(str);

        }

        // 关闭socket

      }

      finally {

        System.out.println("关闭...");

        socket.close();

      }

    }

    finally {

      s.close();

    }

  }

}

2、建立客户端工程和JAVA类,类程序的原代码为:

import java.io.*;

import java.net.*;

import ch07.section03.*;

public class socketClient {

  public static void main(String[] args) throws IOException {

    // 指定使用本地IP

    InetAddress addr =

        InetAddress.getByName(null);

    System.out.println("addr = " + addr);

    Socket socket =

        new Socket(addr, SocketServer.PORT);

    // 将代码放在Try语句中执行,以确保程序能关闭socket

    try {

      System.out.println("socket = " + socket);

      BufferedReader in =

          new BufferedReader(

          new InputStreamReader(

          socket.getInputStream()));

      // 定义一个PrintWriter对象写输出流

      PrintWriter out =

          new PrintWriter(

          new BufferedWriter(

          new OutputStreamWriter(

          socket.getOutputStream())), true);

      for (int i = 0; i < 10; i++) {

        out.println("测试 " + i);

        String str = in.readLine();

        System.out.println("自服务端: " + str);

      }

      out.println("END");

    }

    finally {

      System.out.println("关闭");

      socket.close();

    }

  }

}

3、调试使以上两个工程能正常运行。

4、对服务器端和客户端的程序代码进行阅读和理解,要求做到每条语句都能明白其具体含义,每个类都了解其功能。

5、对以上程序进行适当的修改,要求SOCKET通信功能保持实现。

(注:修改的方向有:图形化界面、多SOCKET互访、结合线程编程等。)

6、撰写实验报告

实验报告包:实验报告首页、实验步骤(每步的内容,有程序的要求有源码和运行结果及结果描述)、实验心得。

原创粉丝点击