【案例1】
(使用字节流)
编写一个服务器端,和一个客户端,服务器端在9999端口监听,客户端连接到服务器端,发送"hello,server",然后退出4服务器端接收到客户端发送的信息,输出,并退出客户端:
import java.io.IOException; import java.io.OutputStream; import java.net.InetAddress; import java.net.Socket; public class SocketTCP01Client { public static void main(String[] args) throws IOException { //1.连接服务器(ip,端口) //解读:连接本机的9999端口,如果连接成功,返回Socket对象 Socket socket = new Socket(InetAddress.getLocalHost(), 9999); System.out.println("客户端socket返回 = " + socket.getClass()); //2.连接上后,生成Socket,通过socket,getOutputStream()得到和socket对象关联的输出流对象 OutputStream outputStream = socket.getOutputStream(); //3.通过输出流,写入数据到 数据通道 outputStream.write("hello,sever".getBytes()); //4.关闭流对象和socket outputStream.close(); socket.close(); System.out.println("客户端退出"); } }
服务器端:
import java.io.IOException; import java.io.InputStream; import java.net.ServerSocket; import java.net.Socket; public class SocketTCP01Server { public static void main(String[] args) throws IOException { //1.在本机的 9999 端口监听,等待连接 //细节:要求在本机没有其他服务在监听9999端口 //这个ServerSocket 可以通过 accept() 返回多个 Socket【多个客户端连接服务器的多并发】 ServerSocket serverSocket = new ServerSocket(9999); System.out.println("服务器在9999端口监听,等待连接..."); //2.当没有客户端连接9999端口时,程序会阻塞,等待连接 Socket socket = serverSocket.accept(); System.out.println("服务器连接成功!"); //3.通过socket.getInputStream() 读取客户端写入到数据通道的数据,显示 InputStream inputStream = socket.getInputStream(); //4.IO读取 byte[] buf = new byte[1024]; int readLen = 0; while ((readLen = inputStream.read(buf)) != -1) { System.out.println(new String(buf,0,readLen));//根据读取到的实际长度,显示内容 } //5.关闭流和socket inputStream.close(); socket.close(); serverSocket.close(); } }
运行结果:
JAVA——TCP编程
最新推荐文章于 2025-04-24 18:48:16 发布