黑马程序员——网络编程

-----------android 培训 java培训 、java学习型技术博客、期待与您交流!------------
一、IP地址
每个设备在网络中都有一个固定的标识,这个标识是唯一的。
icponfig是在dos窗口下查看本机IP的命令
ping是测试连接其他IP设备用的
本地回路地址是127.0.0.1,而255.255.255.255是广播地址
二、端口号
每个程序在设备上的唯一标识,所以说发程序的时候不仅要明确发到哪个机器上还要发到每个指定的程序上
编写网络应用就要绑定一个端口号,最好使用1024以上的
三、网络协议
UDP传输
只要是网络传输,必须有socket 。
数据一定要封装到数据包中,数据包中包括目的地址、端口、数据等信息。
客户端
创建Socket连接服务端(指定ip地址,端口号)通过ip地址找对应的服务器
调用Socket的getInputStream()和getOutputStream()方法获取和服务端相连的IO流
输入流可以读取服务端输出流写出的数据
输出流可以写出数据到服务端的输入流
服务端
创建ServerSocket(需要指定端口号)
调用ServerSocket的accept()方法接收一个客户端请求,得到一个Socket
调用Socket的getInputStream()和getOutputStream()方法获取和客户端相连的IO流
输入流可以读取客户端输出流写出的数据
输出流可以写出数据到客户端的输入流
直接操作udp不可能,对于java语言应该将udp封装成对象,易于我们的使用,这个对象就是DatagramSocket. 封装了udp传输协议的s ocket对象。
因为数据包中包含的信息较多,为了操作这些信息方便,也一样会将其封装成对象。这个数据包对象就是:DatagramPacket.通过这 个对象中的方法,就可以获取到数据包中的各种信息。
DatagramSocket具备发送和接受功能,在进行udp传输时,需要明确一个是发送端,一个是接收端。
udp的发送端:
建立udp的socket服务,创建对象时如果没有明确端口,系统会自动分配一个未被使用的端口。
②:明确要发送的具体数据。
③:将数据封装成了数据包。
④:用socket服务的send方法将数据包发送出去。
⑤:关闭资源。
udp的接收端:
①:创建udp的socket服务,必须要明确一个端口,作用在于,只有发送到这个端口的数据才是这个接收端可以处理的数据。
②:定义数据包,用于存储接收到数据。
③:通过socket服务的接收方法将收到的数据存储到数据包中。
④:通过数据包的方法获取数据包中的具体数据内容,比如ip、端口、数据等等。
⑤:关闭
资源。
InetAddress:构造方法私有,不能直接创建对象。
InetAddress getByName(String host):在给定主机名的情况下确定主机的ip地址。
InetAddress getLocalHost():返回本地主机。
InetAddress[] getAllByName(String host)
ip.getHostAddress(), 
ip.getHostName()

三、TCP网络编程
     Java 的基于套接字编程分为服务端编程和客户端编程:
  服务器编程:
   1、调用ServerSocket(int port) 创建一个服务器套接字,并绑定到指定端口上。
   2、调用accept(),监听连接请求,如果客户端请求连接,并接收连接,返回客户端套接字Scoket。
   3、调用Socket 类的getOutputStream 和getInputStream 获取网络输出和输入流,开始网络数据的发送和接收。
   4、关闭通信套接字。
   客户端编程:
   1、调用Socket()创建一个流套接字,并请求连接到服务器。
   2、调用Socket 类的getOutputStream 和getInputStream 获取网络输出和输入流,开始网络数据的发送和接收。
   3、关闭通信套接字。
   练习:模拟一个文件上传的C/S 程序。即可以多个用户同时向客户端上传mp3格式文件。
   分析:在多个客户端同时连接服务器,并对服务器进行上传文件操作时,则需要使用多线程,否则会出现局限性:当一个客户 端连接服务器时,其他客户端则不能连接上
    问:如何定义线程?
   明确每个客户端要在服务端执行的代码,将该代码存入run方法中。如:
   服务器:
   1、创建服务器Socket 。
   2、接收客户端连接。
   3、接收客户端上传的文件。
   4、接收完成,返回信息。
   5、关闭资源。
   上面5个步骤中,3、4则是客户端要在服务端执行的代码,我们则将该代码存入run()方法中。
  四、URL
   URL(Uniform Resurse Locator ,统一资源定位器),用来表示从英特网上得到资源位置和访问位置这些资源的方法。协议 名://资源名。
   如:http://www.cnblogs.com/jbelial/
其中:协议名是http 协议,主机名是www.cnblogs.com,端口默认80,文件路径名是/jbelial/。
1、URL类
   URL 类代表了一个同一资源定位符,它是指向互联网资源的指针。
   URL 类的构造方法如下:
   > URL(String spec ) :由一个表示URL 地址的字符串构造一个URL对象。
   > URL(String protocol , String host , int port , String file) :根据指定protocol、host、port号和file创建URL 对象。
   常用方法:
   > InputStream openStream() :打开一个连接到该URL 的InputStream 的对象,通过对象,可以URL 中读取Web 页面内容。
   > URLConnection openConnection() :创建并返回一个 URLConnection 对象,它表示到URL所引用的远程对象的连接。
   > Object getContent() : 获取此URL 的内容。
   > String getFile() :获取次URL的文件名。
   > String getHost(): 获取次URL的主机名
   > String getPath(): 获取次URL的路径部分。
   > String getProtocol(): 获取次URL的协议名称
   > String getQuery(): 获取次URL 的查询。


    2、URLConnection 类
   抽象类 URLConnection 是所有类的超类,它代表应用程序和 URL 之间的通信链接。此类的实例可用于读取和写入此 URL 引用的 资源。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值