本文主要用于学习TCP相关知识
设计分为两个部分,客户端和服务端,客户端发送消息,服务端收到消息
启动时,先启动服务端,在启动客户端,然后再服务端查看结果
客户端设计
- 要知道一个服务器的地址、端口号
- 创建一个socket连接
- 发送消息IO流
- 释放资源
import java.io.IOException;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;
//客户端
public class TcpClientDemo01 {
public static void main(String[] args) throws IOException {
//1.要知道一个服务器的地址、端口号
InetAddress serverIP = InetAddress.getByName("localhost");
int port = 9999;
//2.创建一个socket连接
Socket socket = new Socket(serverIP, port);
//3.发送消息IO流
OutputStream os = socket.getOutputStream();
os.write("你好!".getBytes());
os.close();
socket.close();
}
}
服务端
- 需要一个地址
- 等待客户端连接
- 读取客户端的消息
- 关闭资源
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
//服务端
public class TcpServerDemo01 {
public static void main(String[] args) throws IOException {
//1.需要一个地址
ServerSocket serverSocket = new ServerSocket(9999);
//2.等待客户端连接
Socket socket = serverSocket.accept();
//3.读取客户端的消息
InputStream is = socket.getInputStream();
//管道流
//这里使用管道流读取信息,不会出现乱码的情况
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buffer=new byte[1024];
int len;
while ((len=is.read(buffer))!=-1){
baos.write(buffer,0,len);
}
System.out.println(baos.toString());
//关闭资源
baos.close();
is.close();
socket.close();
serverSocket.close();
}
}