本帖最后由 Himoriarty 于 2015-6-10 11:01 编辑
------- <a target="blank">android培训</a>、<a target="blank">java培训</a>、期待与您交流! ----------
TCP协议客户端并发上传图片的步骤:
客户端:1、创建Socket服务并指定要连接的主机和端口;
2、建立读取流对象,读取文件数据;
3、获取Socket流中的输出流,将数据写到流中,通过网络发送到服务端;
4、使用socket对象中shutdownOutput方法向服务端发送一个结束标记;
5、获取Socket流中的读取流,读取服务端返回的数据,打印在客户端平台上;
6、关闭读取流资源,关闭客户端,
服务端:
1、建立服务端的Socket服务,并监听一个端口;
2、在循环体内,获取连接过来的客户端对象,通过ServerSocket的accept方法获取,此方法为阻塞式方法;
并新建一个线程,使每一个客户端都拥有自己的线程,在线程内进行读取和输出流数据,将流操作封装在一个类中;
3、此类实现Runnable接口,实现run方法,初始化时传连接过来的客户端对象,通过ServerSocket的accept方法获取,此方法为阻塞式方法;
4、客户端如果发过来数据那么服务端使用对应的客户端对象并获取到该客户端对象的读取流来读取发过来的数据;
5、建立输出流对象,将读取流中的数据写到服务端上。
6、关闭输出流,关闭获取的客户端对象。
个人学习心得:
我在测试时,当以插入网线时连接我的IPv4的IP地址为主机时,无法传输成功,当拔掉网线连接127.0.0.1为主机的时候可以,插上网线还是这个IP地址,就不行了,我采用了第三种IP地址,即本机的本地IPv6地址的时候无论插入网线还是拔掉网线都可以传输成功。不过我还不知道为什么。有知道的可以帮忙解释一下,但是这样的话对本程序会出现一个问题,如果我以IP地址为文件名,存储客户端上传的文件时,会出现异常,因为IPv6中含有违反文件命名的非法字符,所以我采用了IP名的子字符串。
----------android培训、java培训、java学习型技术博客、期待与您交流!------------
|
|