Socket
套接字(socket)是一个抽象层,应用程序可以通过它发送或接收数据,可对其进行像对文件一样的打开、读写和关闭等操作。套接字允许应用程序将I/O插入到网络中,并与网络中的其他应用程序进行通信。网络套接字是IP地址与端口的组合
通过在客户端构建socket对象 传入服务器端的Ip地址和端口号,可以将socket对象发送给服务端,服务端通过ServerSocket的accept方法获取到该对象,建立链接,通过IO流传输数据
简单示例
创建一个客户端类TCPClient
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
public class TCPClient {
public static void main(String[] args) throws IOException {
Socket socket_client = new Socket("127.0.0.1", 8888);
//两个参数分别为服务器端的ip地址和端口号
OutputStream out_client = socket_client.getOutputStream();
//通过socket构建一个输出流对象
System.out.println("客户端:--------向服务器发送消息-------");
out_client.write("你好,服务器!".getBytes());
//将要发送的信息转换为字节数组后通过输出流发送给服务器
InputStream in_client = socket_client.getInputStream();
//通过socket构建一个输入流,用于接收服务器返回的数据
byte[] getform_server = new byte[2048];
//创建一个字节数组用于存储接收的数据
int len = in_client.read(getform_server);
//获取数据长度
String s = String.valueOf(len);
System.out.println("客户端:---------收到服务器回复:--------");
String get = new String(getform_server);
System.out.println(get);
//打印从服务器接收到的内容
System.out.println(s);
socket_client.close();
//关闭socket,释放资源
}
}
创建一个server类
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) throws IOException {
ServerSocket server = new ServerSocket(8888);
//构建一个ServerSocket对象,用于对接客户端的socket对象,构造方法中传入对应端口号
Socket socket_server = server.accept();
//获取客户端socket实例
InputStream in_server = socket_server.getInputStream();
//构建一个输入流用于接收客户端传入的数据
byte[] getfrom_client = new byte[1024];
in_server.read(getfrom_client);
String get = new String(getfrom_client);
//处理传入的数据
System.out.println("服务端:----------收到客户端请求---------");
System.out.println(get);
//打印从客户端收到的信息
OutputStream out_server = socket_server.getOutputStream();
//构建输出流用于给客户端发送消息
out_server.write("你好客户端".getBytes());
System.out.println("服务端:-----------回复客户端---------");
socket_server.close();
server.close();
//关闭socket,关闭serversocket,释放资源
}
}
先运行server端,运行后server端会处于监听端口状态
此时运行client端
socket原理相关推荐查看https://blog.youkuaiyun.com/jiushimanya/article/details/82684525