当前位置:文档之家› JAVA实现SOCKET通信小实验

JAVA实现SOCKET通信小实验

客户端从键盘读取数据 readline = sin.readLine();
Client 端等待从 server 端输入的数据,此方法为阻塞方法 System.out.println("Server:" + is.readLine());
Client 端输出数据到 server 端 os.println(readline);
捕捉异常,输出提示语句并且执行退出 catch(SocketTimeoutException e){ System.out.println("等待传输数据超时.."); System.exit(0); }
Client 端:
Client 端建立到 server 端的 tcp socket 连接,4700 端口为 server 端侦听的端口 Socket socket = new Socket("127.0.0.1",4700);
Server
ServerSocket s(port #) s.accept() /等待连接 socket 对象
Client
Socket(host,port#) (Attempt to connect)
OutputStream InputStream
OutputStream InputStream
Socket.close()
初始化输出/输出 BufferedReader sin = new BufferedReader(new InputStreamReader(System.in));// 将 client 输入端指向标准键盘 PrintWriter os = new PrintWriter(socket.getOutputStream());//将 client 输出端指向 server 端 BufferedReader is = new BufferedReader(new InputStreamReader( socket.getInputStream()));//将 client 输入端指向 server 端
Client 端同样设置了超时退出 socket.setSoTimeout(timeout);
将 server 端的输出通道包上打印流指向 client 端
BufferedReader
sin
=
new
BufferedReader(new
InputStreamReader(System.in));//将 server 端输入通道指向标准键盘输入
调用流的 readLine()方法从 client 端读一行,如果 client 没有内容,则处于阻塞状 态,直到 client 端向 server 端发送了数据 System.out.println("Client:" + is.readLine());
从键盘读入数据,此方法也为阻塞式 String line = sin.readLine();
输出从键盘读入的数据到 client 端 os.println(line);
启用/禁用带有指定超时值的 SO_TIMEOUT,以毫秒为单位。将此选项设为非零的超时值 时,在与此 Socket 关联的 InputStream 上调用 read() 将只阻塞此时间长度。如果 超过超时值,将引发 .SocketTimeoutException,虽然 Socket 仍旧有效。选 项必须在进入阻塞操作前被启用才能生效。超时值必须是 > 0 的数。超时值为 0 被解 释为无穷大超时值。 socket.setSoTimeout(timeout);
BufferedReader is = new BufferedReader(new InputStreamReader(
socket.getInputStream()));//将 server 端输入通道包上缓冲流
指向 client 端
PrintWriter os = new PrintWriter(socket.getOutputStream());//
几个重要概念: 网络通信协议概念:计算机网络中实现通信必须有一些约定即通信协议,对速率、传输代码、 代码结构、传输控制步骤、出错控制等制定标准。 网络通信接口:为了使两个结点之间能够进行对话,必须在它们之间建立通信工具(即接口), 使彼此之间能进行信息交换。接口包括两部分: 硬件装置:实现结点之间的信息传送。 软件装置:规定双方进行通信的约定协议。 IP(Internet Protocol)协议:是网际层(OSI 参考模型)的主要协议,支持网间互联的 数据l)协议:是专门设计用于在不可靠得的因特网上提供 可靠、端到端的字节流通信的协议。它是一种面向连接的协议。TCP 连接是字节流而非报文 流。 Socket: 1.两个 JAVA 应用程序可通过一个双向的网络通信连接实现数据交换,这个双向链路的一端 称为一个 Socket。 2.Socket 通常用来实现 client-server 连接。 包中定义的两个类 Socket 和 ServerSocket,分别用来实现双向连接的 client 端和 server 端。 4.建立连接时所需的寻址信息为远程计算机的 IP 地址和端口号(port number) Java 流式输出/输出原理:在 Java 程序中,对于数据的输入(input)/输出(output)操 作以“流”(stream)方式进行,java.io 包中定义了各样的“流”类,用以获取不同种类 的数据。 TCP/IP Socket 通信:
server = new ServerSocket(4700); 定义接收 client 端连接的 socket
Socket socket = null; Server 端监听并接受到套接字的连接。
socket = server.accept(); 启用 java 输出输出流实现对数据流进行接收和发送
Socket.close()
Server 端:
首先导入所需要的包
首先导入所需要的包 import java.io.*; import .*;
定义 server 端的 socket
ServerSocket server = null; Server 端开启 socket 通信的连接端口
相关主题