高级java_7 网络2

1. InetAddress类

  • 作用:发现当前连接在服务器上的客户
  • InetAddress包含:客户主机名和IP地址
  • 在服务器中使用socket.getInetAddress()方法创建InetAddress的一个实例
  • InetAddress的方法:
    获取主机名 :getHostName();
    获取IP地址:getHostAddress();
  • 通过InetAddress的getByName解析主机名或IP地址,本质是通过参数访问DNS获得信息,如下
InetAddress.getByName(“www.bistu.edu.cn”);
输出InetAddress.getHostAddress();得到bistu的IP地址

InetAddress.getByName(211.82.96.4);
输出InetAddress.getHostName();得到该IP对应的主机名:www.bistu.edu.cn

2. 服务多客户

用线程处理多客户端同时访问:

2.1为每个连接创建一个线程

While(true){
	Socket soc = serverSocket.accept();
	ThreadClass th = new ThreadClass(socket);
	th.start();
}

2.2在循环中使用InetAddress

While(true){
	Socket soc = serverSocket.accept();
	InetAddress  inetadd=soc.getInetAddress();
	System.out.print(InetAddress.getHostname());
}
  • 服务器接收数目不限的客户端
  • 为了限制连接的并发数目,可以使用一个有固定大小的线程池(executorService)
  • 互相独立的线程与相应的客户端通信
  • 本质上:服务器为每个客户端提供独立的程序进行服务,所以有1w个客户端访问服务器=服务器内存中创建了1w个相同的服务程序
  • 因此服务程序需尽可能的精简

3. Applet客户端

Applet有两种运行方式:

3.1当做一个独立的java程序运行

  • Run as an application
  • 访问服务器与一般java客户端程序一样

3.2嵌在网页中运行

  • 作为网页中的插件运行
  • 因为网页可能被部署在不同的服务器上
  • 所以建立socket的时候主机地址采用applet的getCodeBase().getHost()获取当前web服务器地址

4. 发送和接收对象

  • 通过DataInputstream、Dataoutputstream来传送基本的数据类型(数字,字符……)
  • Java 中使用可序列化对象来存放结构化数据,使用ObjectInputStream、ObjectOutputStream进行对象的发送和接收
  • 创建序列化数据类
    Class student implements java.io.Serializable{…}
    ObjectOutputStream.writeObject(s)将student对象写入服务器
    ObjectInputStream.readObject()获取客户端送来的对象

5. 从Web服务器上读取文件

  • Java运行客户端读取Web服务器上的文件,是通过URL来定位web服务器上的文件的
    URL url = new URL(“http://www.bistu.edu.cn/index.html”);
    InputStream is = url.openStream();
    InputStreamReader r = new InputStreamReader(is)
    r.readLine();逐行读出文件内容

6. JEditorPane类

  • Javax.swing.JEditorPane 是GUI中的一个组件,能自动显示指定URL的文件,可显示文件有三种:
    普通文本文件txt
    网页文件html
    富文本文件rtf
    该控件实现最基本的浏览器功能。
  • 关键语句:
JEditorPan  jep = new JEditorPane();
Jep.setPage(url);//设置显示的URL资源
  • 实现网页超链接功能
Jep.addHyperlinkListener(
 new HyperlinkListener(){
    public void actionPerformed(ActionEvent e){ 
         jep.setPage(e.getURL());
    }
  }
)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值