美文网首页
java42(网络编程-02 TCP基础与多线程上传图片问题分析

java42(网络编程-02 TCP基础与多线程上传图片问题分析

作者: 机智的老刘明同志 | 来源:发表于2019-02-20 08:13 被阅读41次

TCP:

        建立客户端(Socket)和服务器端(ServerSocket)

        建立连接后,通过Socket中的IO流进行数据的传输(操作IO流的是客户端对象)

        关闭socket

Client基本用法:

Server基本用法 :

多线程上传:

        关键点1:追加结束标记(总之让服务端read方法得到-1)

        shutdownOutput:关闭客户端的输出流,同时服务器端的输入流也随之关闭

        在如下图所示代码中,假如没有shutdownOutput方法。那么客户端while循环中的read方法读到-1就结束了。客户端并没有将-1发送给服务器。服务器则因为没有结束标志-1,所以服务器端while循环中的read方法一直处于阻塞状态。

        关键2:多线程上传

        ServerSocket ss = new ServerSocket(8890);

        while(true){

            Socket s = ss.accept();                             

            new Thread(new picthread(s)).start();

        }

        假设现在有A,B两个用户先后连接到咱们的文件上传服务器上,当A首先连接的时候,获取到A的客户端对象并且开始了一个新的线程(此时进程中有两个线程:主线程和A的线程),主线程还会继续执行,但是由于accept()方法是阻塞方法(没有客户端连接的时候,会一直等待)。主线程会一直等待B的连接。

相关文章

网友评论

      本文标题:java42(网络编程-02 TCP基础与多线程上传图片问题分析

      本文链接:https://www.haomeiwen.com/subject/jpfaeqtx.html