Socket又称套接字,是基于应用服务与TCP/IP通信之间的一个抽象,将TCP/IP协议里面的通信逻辑进行分装,只要通过一组简单的API就可以实现网络的链接。
分别开两个线程,一个作为服务端,一个作为客户端。客户端主要监听端口上的信息,并以字节流读取并显示,同时在Server类里面,还需要同时开启监听和发送信息的线程。每连上一个客户端,就需要对应开启一个监听信息的线程。
服务器端:
import java.io.*; import java.net.InetAddress; import java.net.ServerSocket; import java.net.Socket; import java.util.Scanner; public class Server extends Netutil { public static void main(String[] args) { new Server().Get(); } /*进入的方法*/ public void Get() { try { ServerSocket serverSocket = new ServerSocket(4432); InetAddress inetAddress = InetAddress.getLocalHost(); // System.out.println("开启服务器"); Socket accept; while (true) { accept = serverSocket.accept(); //System.out.println("主机"+accept.getRemoteSocketAddress()+"连接服务器"); Thread hander = new Thread(new Handler(accept)); hander.start(); } } catch (IOException e) { e.printStackTrace(); } } /** * 内部处理类 */ class Handler extends Netutil implements Runnable { Socket socket; public Handler(Socket socket) { this.socket = socket; } @Override public void run() { try { super.Oprate(socket); } catch (IOException e) { e.printStackTrace(); } } } }
客户端:
import java.io.*; import java.net.InetAddress; import java.net.ServerSocket; import java.net.Socket; import java.util.Scanner; public class Server extends Netutil { public static void main(String[] args) { new Server().Get(); } /*进入的方法*/ public void Get() { try { ServerSocket serverSocket = new ServerSocket(4432); InetAddress inetAddress = InetAddress.getLocalHost(); // System.out.println("开启服务器"); Socket accept; while (true) { accept = serverSocket.accept(); //System.out.println("主机"+accept.getRemoteSocketAddress()+"连接服务器"); Thread hander = new Thread(new Handler(accept)); hander.start(); } } catch (IOException e) { e.printStackTrace(); } } /** * 内部处理类 */ class Handler extends Netutil implements Runnable { Socket socket; public Handler(Socket socket) { this.socket = socket; } @Override public void run() { try { super.Oprate(socket); } catch (IOException e) { e.printStackTrace(); } } } }