1. 服务器(一个连接的情况)
package com.machuang.tcp; import java.io.DataOutputStream; import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; public class ServerTcp { public static void main(String[] args) throws IOException { // 创建 socket, 指定端口号 ServerSocket server = new ServerSocket(8888); // 等待客户端连接,阻塞式,直到有客户端连接,才会执行该语句并往下执行 Socket socket = server.accept(); // 输出 连接成功 的提示 System.out.println("一个客户端已连接"); /* //// 发送一个数据到客户端 String msg = "欢迎连接"; BufferedWriter bw = new BufferedWriter( new OutputStreamWriter( socket.getOutputStream() ) ); // 写出数据 bw.write(msg); bw.newLine(); // 添加一个换行 bw.flush(); */ // 使用 DataOutputStream 方法发送数据 DataOutputStream dos = new DataOutputStream(socket.getOutputStream()); // 写数据 dos.writeUTF("欢迎连接"); dos.flush(); } }
2. 客户端
package com.machuang.tcp; import java.io.DataInputStream; import java.io.IOException; import java.net.Socket; import java.net.UnknownHostException; public class ClientTcp { public static void main(String[] args) throws UnknownHostException, IOException { // 创建 socket, 需指定服务器地址和端口号 Socket client = new Socket("localhost", 8888); /* //// 接收服务器的数据,注意,使用 Buffered 方法时,是逐行读取 BufferedReader br = new BufferedReader(new InputStreamReader(client.getInputStream())); String echo = br.readLine(); */ // 使用 DataInputStream 方法接收数据 DataInputStream dis = new DataInputStream(client.getInputStream()); String receivedStr = dis.readUTF(); // 显示接收到的数据 System.out.println(receivedStr); } }
3. 服务器(多个连接的情况)
package com.machuang.tcp; import java.io.DataOutputStream; import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; public class ServerTcpMultiConncetion { public static void main(String[] args) throws IOException { // 创建 socket, 指定端口号 ServerSocket server = new ServerSocket(8888); while(true) { // 等待客户端连接,阻塞式,直到有客户端连接,才会执行该语句并往下执行 Socket socket = server.accept(); // 输出 连接成功 的提示 System.out.println("一个客户端已连接"); // 使用 DataOutputStream 方法发送数据 DataOutputStream dos = new DataOutputStream(socket.getOutputStream()); // 写数据 dos.writeUTF("欢迎连接"); dos.flush(); } } }