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的连接。



网友评论