TCP流程(CS)

建造服务器

public static void main(String[] args) throws IOException {
        ServerSocket serverSocket=new ServerSocket(8888);
        Socket client=serverSocket.accept();
        DataInputStream dis=new DataInputStream(client.getInputStream());
        String str=dis.readUTF();
        int a=dis.readInt();
        System.out.println(str+a);
        dis.close();
    }

逐条分析

ServerSocket serverSocket=new ServerSocket(8888);
        Socket client=serverSocket.accept();

建立ServerSocket可以随时监控客户端的连接,socket表示客户端,用一个客户端接收传过来的客户端,用accept()方法。
这个方法是阻塞式的监控,没有接收到客户端,就不会往下执行,

DataInputStream dis=new DataInputStream(client.getInputStream());
        String str=dis.readUTF();
        int a=dis.readInt();
        System.out.println(str+a);

socket都有字节流方法,将其中的数据以字节流存储,以便操作,getInputStream,这里是由于客户端用的 数据流,所以服务器也用了一下数据流,根据需要随机应变即可。

dis.close();

既然有字节流,就必须要关闭资源。

建造客户端

 public static void main(String[] args) throws IOException {
        //向本地IP 8888端口请求连接
       Socket client=new Socket("localhost",8888);
       DataOutputStream dos=new DataOutputStream(client.getOutputStream());
       dos.writeUTF("马云");
       dos.writeInt(666);
       dos.flush();
       dos.close();
    }
Socket client=new Socket("localhost",8888);
       DataOutputStream dos=new DataOutputStream(client.getOutputStream());

新建socket,指明IP和端口,即发送地址,这里DataOutputStream是修饰流,TCP中核心操作是字节流,这个只是添砖加瓦的东西,包装了一下。

dos.writeUTF("马云");
       dos.writeInt(666);
       dos.flush();
       dos.close();

然后按照数据流使用方法写入数据,这里说一下,套用的这种修饰流进行关闭,会自动关闭它所修饰的字节流。

你可能感兴趣的:(javaSE)