服务端开发步骤
-
① 使用ServerSocket创建一个服务端监听程序,绑定指定端口
-
ServerSocket serverSocket = new ServerSocket(9999);
-
② 服务端开启监听,进入阻塞状态,接收其他计算机的连接
-
Socket socket = serverSocket.accept();
-
③ 接收到一个连接,从连接对象中获取字节输入流
-
InputStream inputStream =socket.getInputStream();
-
④ 把缓冲字节写入服务器
-
byte[] buffer = new byte[1024]; int size; while ((size=inputStream.read(buffer)) != -1){ //从0开始写入字节数组到-1 size长度 byteArrayOutputStream.write(buffer,0,size); System.out.println(byteArrayOutputStream.toString());
-
⑤ 将打开的字节输入流、字节输出流、连接对象等进行关闭
客户端开发步骤
- ① 使用Socket创建一个客户端程序,指定服务器IP 和 端口
Socket socket = new Socket ("10.11.58.47",9999)
- ② 从连接对象中获取字节输出流
OutputStream =outputStream = socket.getOutputStream()
- ③ 向字节输出流中写入请求(发送)数据
outputStream.write("hello".getBytes());
- ④ 关流
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
/**
* @ClassName TcpServerDemo
* @Description 服务器 server
* @Author Jack
* @Date 2021/7/30 20:06
* @Version 1.8
*/
public class TcpServerDemo {
public static void main(String[] args) {
ServerSocket serverSocket = null;
Socket socket = null;
InputStream inputStream = null;
ByteArrayOutputStream byteArrayOutputStream = null;
try {
//1.开启一个端口
serverSocket = new ServerSocket(9999);
//2.等待客户端连接过来
socket = serverSocket.accept();
//3.读取客户端的消息 输入流
inputStream =socket.getInputStream();
//4.字节缓冲流 输出到硬盘
byteArrayOutputStream = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int size;
while ((size=inputStream.read(buffer)) != -1){
//从0开始写入字节数组到-1 size长度
byteArrayOutputStream.write(buffer,0,size);
System.out.println(byteArrayOutputStream.toString());
}
} catch (IOException e) {
e.printStackTrace();
} finally {
//关流
try {
if (byteArrayOutputStream != null) {
byteArrayOutputStream.close();
}
if (inputStream != null){
inputStream.close();
}
if (socket != null){
socket.close();
}
if (serverSocket != null){
serverSocket.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
/**
* @ClassName TcpClientDemo
* @Description 客户端
* @Author Jack
* @Date 2021/7/30 20:03
* @Version 1.8
*/
public class TcpClientDemo {
public static void main(String[] args){
Socket socket = null;
OutputStream outputStream = null;
try {
//1.要知道服务端的IP
InetAddress serverIP = InetAddress.getByName("10.11.58.47");
//2.要知道服务端的端口
int port = 9999;
//3.创建一个Socket连接(上面的可以直接传参数)
socket = new Socket(serverIP,port);
//Socket socket = new Socket ("10.11.58.47",9999)
//4. 连接服务端接口的管道
outputStream = socket.getOutputStream();
//5.写入字节数组消息
outputStream.write("hello".getBytes());
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (outputStream != null){
outputStream.close();
}
if (socket != null) {
socket.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}