建立客户端与服务端连接,客户端可以不断从键盘输入发送给服务端。服务端接收后,从键盘输入回复客户端。
注意:每写一行就发送一次。
Client.java
import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.Socket; import java.util.Scanner; //客户端 public class Client { public static void main(String[] args) throws IOException { new Client().start(); } public void start() throws IOException { //创建一个和服务端的链接 //127.0.0.1本机地址 //端口号范围在0-65535 2的16次方减1 for (int i = 0; i < 40; i++) { Socket socket = new Socket("127.0.0.1", 777); System.out.println("请输入想要发送的内容:"); Scanner scanner = new Scanner(System.in); String next = scanner.next(); //获取输出流,通过此流可以往服务端发送数据。 OutputStream outputStream = socket.getOutputStream(); outputStream.write(next.getBytes()); //outputStream.close(); System.out.println("收到回信:"); InputStream inputStream = socket.getInputStream(); byte[] bytes = new byte[10]; int l = inputStream.read(bytes); System.out.println(new String(bytes,0,l)); } //关闭与服务端的连接 //socket.close(); } }
Server.java
import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket; import java.util.Scanner; //服务端 public class Server { public static void main(String[] args) throws IOException { new Server().start(); } public void start() throws IOException { //在本机打开777端口监听来自网络的连接 ServerSocket serverSocket = new ServerSocket(777); //阻塞等待直到有客户端连接,返回此客户端(服务端与客户端之间的连接) while (true){ System.out.println("等待连接..."); Socket client = serverSocket.accept(); //通过输入流获取客户端发过来的数据 InputStream inputStream=null; inputStream = client.getInputStream(); byte[] buffer = new byte[10]; int l = inputStream.read(buffer); System.out.println("接收到消息:"); System.out.println(new String(buffer,0,l)); System.out.println("回执消息:"); Scanner scanner = new Scanner(System.in); String next = scanner.next(); OutputStream outputStream = client.getOutputStream(); outputStream.write(next.getBytes()); /* //关闭流 inputStream.close(); //关闭客户端连接 client.close(); //关闭监听的端口 serverSocket.close();*/ } } }