Java基础--网络编程下篇
2015-01-14 22:53
316 查看
------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
网络基础--应用
实例一:用TCP客户端并发上传图片
1:单线程上传的思路Day24\UploadPic.java
客户端
1.服务端点。
2.读取客户端已有的图片数据
3.通过Socket输出流将数据发给服务端
发送完毕,标记发送状态
//告诉服务端数据已写完,利用Socket的shutdownOutput方法
s.shutdownOutput();
4.读取服务端反馈信息。
5.关闭
服务端
1.服务端服务,并监听窗口
2.获取客户端对象,并获取客户ip
3.读取客户端输入流数据
4.写入文件
5.用客户端输出流反馈信息
6.关流
2:图片上传(多线程) Day24\UploadPicByThread.java
单线程的服务端有个局限性。当A客户端连接上以后,被服务端获取到。服务端执行具体流程。
这时B客户端连接,只能等待。因为服务端还没有处理完A客户端的请求。还没有循环回来执行下一次accept方法。
所以,暂时获取不到B客户端对象。
那么为了可以让多个客户端同时并发访问服务端。服务端最好就是将每个客户端封装到
一个单独的线程中,这样,就可以同时处理多个客户端请求。
如何定义线程呢?
只要明确了每一个客户端要在服务端执行的代码,将该代码存入run方法即可。
实例二:客户端并发登录
Day24\UserLogin.java
要求:
客户端通过键盘录入用户名,服务端对这个用户名进行校验。
如果该用户存在,在服务端显示xxx,已登陆;并在客户端显示xxx,欢迎光临。
如果用户不存在,在服务端显示xxx,尝试登陆;并在客户端显示xxx,该用户不存在。
最多就登录三次。
实例三:客户端和服务的浏览器演示 JavaWeb课程时候有详细介绍关于http协议和Tomcat服务器
Tomcat服务器和ie浏览器之间的演示,Tomcat内部ServerSocket
浏览器是一个标准的客户端,它可以对服务端传送过来的数据消息进行解析,
把符合应用层协议的消息部分解析后,将头信息拆包掉,传送到应用层,只保留了
正确的正文主题部分显示在主体部分上。
而由于使用java编译是在传输层和网际层处理的,所以,会接受到全部的消息,
包含了头消息。而浏览器处于应用层,已将发送来的头消息去除,只留下了主体信息。
实例四:URL和URLConnection
1、URL:
URI:范围更大,条形码也包含于此范围 统一资源定位符URI(Uniform Resource Identifiers)
URL:范围较小,即域名
方法:
(1)构造函数:URL(String protocol,String host,int port,String file);//根据指定 protocol、host、port号和 file 创建 URL对象。
(2)String getProtocol();//获取协议名称
(3)String getHost();//获取主机名
(4)int getPort();//获取端口号
(5)String getFile();//获取URL文件名
(6)String getPath();//获取此URL的路径部分
(7)String getQuery();//获取此URL的查询部,客户端传输的特定信息
注:一般输入网址,是不带端口号的,此时可进行获取,通过获取网址返回的port,
若port为-1,则分配一个默认的80端口,如
int port = getPort();
if(port == -1)
port = 80;
2、URLConnection 3G的时候也会用到很重要
方法:
1)URLConnection openConnection();//用URL调用此方法,返回一个 URLConnection 对象,
它表示到 URL 所引用的远程对象的连接。
2)InputStream getInputStream();//获取输入流,底层封装的是Socket的getInputStream()方法
3)OutputStream getOutputStream();//获取输出流 。。。
小知识点
1、Socket类的构造函数中,有一个空参数的构造函数:
Socket()//通过系统默认类型的 SocketImpl创建未连接套接字对象
可以通过connect(SocketAddress endpoint)方法来连接服务器。
而SocketAddress是一个抽象类,子类InetSocketAddress,此类实现IP套接字地址(封装了IP地址 + 端口号)。
InetAddress代表IP地址,
2、ServerSocket对象中的构造函数:
ServerSocket(int port,int backlog),其中的backlog表示队列的最大长度,能连接到服务器的客户端的同时最大个数,即最大连接数。
3、在浏览器输入网址访问一台主机所做的操作:必须掌握!!!
图示:
相关文章推荐
- Java网络编程基础 Datagram类使用方法
- Java网络编程基础 ServerSocket类使用
- Java学习笔记之网络编程基础-获取本机名称
- java基础整理12--网络编程
- Java网络编程基础 InetAddress类的使用
- Java编程--网络编程基础
- Java套接字实现网络编程之基础篇(1)
- 实训 Java基础知识---流,线程,网络编程
- JAVA网络编程基础
- 基于Socket的Java网络编程集粹-Java基础-Java-编程开发
- [零基础学JAVA]Java SE应用部分-32.Java网络编程 推荐
- Java Socket网络编程基础
- Java网络编程基础 InetAddress类的使用
- Java网络编程基础 InetAddress类的使用
- Java在Client/Server网络中的应用-Java基础-Java-编程开发
- Java学习笔记(七、网络编程基础)
- 网络-两远程客户端之间的通讯原理-Java基础-Java-编程开发
- Java 网络编程基础总结
- Java学习笔记之网络编程基础-通过URLConnection获取HTML页面
- Java学习笔记之网络编程基础-根据域名自动到DNS上获取IP地址