TCP通信原理
TCP通信协议是一种可靠的网络协议,它在通信的两端各建立一个Socket对象, 从而在通信的两端形成网络虚拟链路,
一旦建立 了虚拟的网络链路,两端的程序就可以通过虚拟链路进行通信。
Java对基于TCP协议的的网络提供了良好的封装,使用Socket对象来代表两端的通信端口,并通过Socket产生IO流来进行网络通信
Java为客户端提供了Socket谈,为服务器端提供了ServerSocket类
TCP发送数据
TCP发送数据的步骤
①创建客户端的Socket对象(Socket)
Socket(String hqst, int port)
②获取输出流,写数据
OutputStream getOutputStream0
③释放资源
void close(
public class Socket
extends Object
implements Closeable
该类实现客户端套接字(也称为“套接字”)。 套接字是两台机器之间通讯的端点。
package com.ThreadTest; /* TCP发送数据的步骤 1:创建客户端的Socket对象(Socket) 2:获取输出流,写数据 3:释放资源 */ import java.io.IOException; import java.io.OutputStream; import java.net.Socket; public class ClientDemo { public static void main(String[] args) throws IOException { // 1:创建客户端的Socket对象(Socket) // Socket(InetAddress address, int port) 创建流套接字并将其连接到指定IP地址的指定端口号。 // Socket s = new Socket(InetAddress.getByName("192.168.1806"),10000); // Socket(String host, int port) 创建流套接字并将其连接到指定主机上的指定端口号。 Socket s = new Socket("192.168.18.6", 10000); //获取输出流,写数据 // Socket类下面的方法 public OutputStream getOutputStream() throws IOException返回此套接字的输出流。 OutputStream os = s.getOutputStream(); os.write("我来了,hello,TCP".getBytes()); //释放资源 s.close(); } }
TCP接收数据
ServerSocket(int port) |
创建绑定到指定端口的服务器套接字。
|
---|
TCP接收数据的步骤
①创建服务 器端的Socket对象(ServerSocket)
ServerSocket(int port)
②监听客户端连接, 返回一个Socket对象
Socket accept()
③获取输入流, 读数据,并把数据显示在控制台
InputStream getInputStream()
④释放资源
void close()
package com.ThreadTest; /* TCP接收数据的步骤 1:创建服务器端的Socket对象(ServerSocket) 2:获取输入流,读数据,并把数据显示在控制台 3:释放资源 */ import java.io.IOException; import java.io.InputStream; import java.net.ServerSocket; import java.net.Socket; public class ServerDemo { public static void main(String[] args) throws IOException { // 1:创建服务器端的Socket对象(ServerSocket) // ServerSocket(int port) 创建绑定到指定端口的服务器套接字。 ServerSocket ss = new ServerSocket(10000); // 2 accept() 侦听要连接到此套接字并接受它。 Socket s = ss.accept(); // 3:获取输入流,读数据,并把数据显示在控制台 InputStream is = s.getInputStream(); byte[] bys = new byte[1024]; int len; while ((len = is.read(bys)) != -1) { System.out.println("数据是:" + new String(bys, 0, len)); } //4 释放资源 ss.close(); } }