JavaSE 网络编程

1、网络:讲不通区域的计算机联系到一起  局域网、城域网、互联网
   网络编程:利用操作系统在不同通信协议上提供的接口(系统调用、函数库)
   实现网络进程的安全通信

2、地址:IPd地址,确定网络上的一个绝对地址 
    
3、端口号:用来区分计算机上的软件的  占用2个字节  0---65535
           在同一个协议下,端口号不能重复
       
       0---1024 的端口,我们不要设置

4、资源定位:URL统一资源定位  URI:统一资源

   
5、数据的传输:
    a、协议 
       1)、TCP协议
           面向连接的,效率比较低  类似于打电话
       2)、UDP协议
           面向非连接的,效率比较高  
6、传输:
   a、先封装
   b、再拆封

   使用IO流进行数据的传输

在程序中如何操作--->利用JDK封装的类
1、InetAddress: 表示互联网协议 (IP) 地址
    static InetAddress getLocalHost();返回本地主机
    static InetAddress getByName(String host)   给定主机名,确定主机IP地址
    String getHostAddress();  返回主机IP地址
    String getHostName();   获得主机名


   InetSocketAddress: IP + 端口
       InetSocketAddress(InetAddress addr, int port) 
       InetSocketAddress(String hostname, int port) 

       public final int getPort()
2、URL :资源定位
      协议、IP、端口、资源文件
      URL(String spec) 
      URL(URL context, String spec) 
      
      public final InputStream openStream()
      //读取网页内容 写到文件

3、TCP:ServerSocket  Socket  (数据传输)
   面向连接  安全可靠  效率低 
   请求  -------->响应

   1)、服务器端
    ServerSocket(int port) 
    public Socket accept() //接收客户端连接 
    
    a、创建一个服务器套接字
       SeverSocket(port)
    b、接受一个连接来自客户机的请求,并返回一个新的套接字
       Socket s = SeverSocket.accept()
    c、从套接字上获得输入流/输出流
       Socket.getInputStream()/Socket.getOuputStream()
    d、使用数据包装流
       DataInputStream(InputStream) /
       DataOutputStream(OutputStream)
      (for example, optional)
    e、从流中接收/发送信息
       (XXX)InputStream.read() /(XXX)OutputStream.write()
    f、释放资源
       (XXX)InputStream.close() /
       (XXX)OutputStream.close()
       Socket.close()


   2)、客户端(Socket)
       Socket(InetAddress address, int port) 
       Socket(String host, int port) 
       
       public OutputStream getOutputStream()
       public InputStream getInputStream()
       
       a、创建一个套接字
          Socket(host, port)
       b、从套接字上获得输入流和/或输出流
          Socket.getInputStream()/Socket.getOuputStream()
       c、使用数据包装流(可选)
          DataInputStream(InputStream) /
      DataOutputStream(OutputStream)
          (for example, optional)
       d、从流中接收/发送信息
          XXX)InputStream.read() /
     (XXX)OutputStream.write()

       e、释放资源
      (XXX)InputStream.close() /
      (XXX)OutputStream.close()
          Socket.close()
    
    多线程操作:
       
   
4、UDP: DataGramSocket  DatagramPacket (数据传输)
   以数据为中心  面向非连接,不安全,效率高
   类:DatagramSocket  Datagrampacket
   1)、客户端
    a、创建客户端--》DatagramSocket  指定端口
    b、准备数据--》字节数组(不能太大)
    c、数据打包 --》Datagrampacket  + 服务器的地址和端口
    d、发送
    e、释放资源

   2)、服务端

    a、创建服务器端 --》DatagramSocket  指定端口
    b、准备接受数据 -->字节数组--》封装DatagramPacket
    c、包  接受数据
    d、分析数据
    e、释放资源

转载于:https://my.oschina.net/u/3611296/blog/1498990

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值