logo资料库

socket通信实验报告.docx

第1页 / 共6页
第2页 / 共6页
第3页 / 共6页
第4页 / 共6页
第5页 / 共6页
第6页 / 共6页
资料共6页,全文预览结束
南华大学 计 算 机 科 学 与 技 术 学 院 实验报告 (2010~2011 学年度 第 2 学期 ) 课程名称 分布式系统 题 目 socket 通信 姓名 孙志强 学号 20084440123 专业 计算机科学 与技术 班级 计算机 081 地点 8 栋实验室 教师 徐卓然
一、 实验目的 通过实验了解 socket 通信的机制,熟悉网络通信的原理, 并理解 TCP/UDP 协议。 二、 实验步骤 运行服务器 运行客户端 服务器回应 客户端发送信息
服务器回应 三、 实验代码 Server: import java.io.*; import java.net.*; public class server { private int port=8000; private ServerSocket serverSocket; public server() throws IOException { serverSocket = new ServerSocket(port); System.out.println("服务器启动"); public String echo(String msg) { return "echo:" + msg; } } } private PrintWriter getWriter(Socket socket)throws IOException{ OutputStream socketOut = socket.getOutputStream(); return new PrintWriter(socketOut,true); } private BufferedReader getReader(Socket socket)throws IOException{ InputStream socketIn = socket.getInputStream(); return new BufferedReader(new InputStreamReader(socketIn)); public void service() { while (true) { Socket socket=null; try { socket = serverSocket.accept(); //等待客户连接 System.out.println("New connection accepted " +socket.getInetAddress() + ":"
+socket.getPort()); BufferedReader br =getReader(socket); PrintWriter pw = getWriter(socket); String msg = null; while ((msg = br.readLine()) != null) { System.out.println(msg); pw.println(echo(msg)); if (msg.equals("bye")) //如果客户发送的消息为“bye”,就结束通信 }catch (IOException e) { e.printStackTrace(); break; } }finally { try{ if(socket!=null)socket.close(); //断开连接 }catch (IOException e) {e.printStackTrace();} } } } } public static void main(String args[])throws IOException { new server().service(); } Client: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintWriter; import java.net.Socket; public class client { private String host="localhost"; private int port=8000; private Socket socket; public client()throws IOException{
socket=new Socket(host,port); } public static void main(String args[])throws IOException{ new client().talk(); } private PrintWriter getWriter(Socket socket)throws IOException{ OutputStream socketOut = socket.getOutputStream(); return new PrintWriter(socketOut,true); } private BufferedReader getReader(Socket socket)throws IOException{ InputStream socketIn = socket.getInputStream(); return new BufferedReader(new InputStreamReader(socketIn)); } public void talk()throws IOException { try{ BufferedReader br=getReader(socket); PrintWriter pw=getWriter(socket); BufferedReader localReader=new BufferedReader(new InputStreamReader(System.in)); String msg=null; while((msg=localReader.readLine())!=null){ pw.println(msg); System.out.println(br.readLine()); if(msg.equals("bye")) break; } }catch(IOException e){ e.printStackTrace(); }finally{ try{socket.close();}catch(IOException e){e.printStackTrace();} } } } 四、 实验总结 通过本次实验,重新复习了有关网络的知识,并对 java 编 程进行了复习,深刻理解了 socket 通信的机制,利用 socket
进行通信时需经以下三个步骤:a、建立 socket 连接,在 通信开始之前由通信双方确认身份,建立一条专用的虚拟 连接通道;b、数据通信:利用虚拟连接通道传送数据信 息进行通信;c、关闭:通信结束时,再将所建的虚拟连 接拆除。
分享到:
收藏