java 网络编程内丝

Java 网络编程:
 1、URL、URLConnection、Socket
 
 2、IP:Internet Protocol,用32位长度(4个字节)的二进制数据。
 
 3、IP地址分为五类
 A类  政府机构          1.0.0.1 --- 126.255.255.254
 B类  中等规模的公司    128.0.0.1 --- 191.255.255.254
 C类  任何人            192.0.0.1 --- 223.255.255.254
 D类  组播              224.0.0.1 --- 239.255.255.254
 E类  实验用            240.0.0.1 --- 255.255.255.255
 127.0.0.1或Localhost表示本机
 
 4、java中InetAddress 类表示IP地址,用于实现主机名和IP地址之间的转换。InetAddress类描述了IP地址,并通过Inet4Address和Inet6Address来实现。
 5、常用方法:
 通过静态工厂方法定义对象。
 static InetAddress getLocalHost() 获得本地主机的InetAddress对象
 static InetAddress getByName(String host) 获得host指定的InetAddress对象。host可以是主机名、IP、DNS域名
 String getHostAddress() 以带圆点的字符串形式获取IP地址。
 String getHostName() 获取主机名字
 
 6、TCP/IP层次结构
 应用层、传输层、网络层、数据链路层
 IP:网络层
 TCP:传输层
 UDP:传输层
 HTTP:应用层
 FTP:应用层
 URL:Universal Resource Locator统一资源定位符号。
 由如下5部分组成:
 <传输协议>://<主机名>:<端口>/<文件名>#<引用>
 传输协议(protocol):有HTTP、FTP、File等
 主机名(hostname):指定资源所在的主机名。可以是IP、主机名或域名
 端口号(port):用来区分一个计算机中提供的不同服务,如web服务、FTP服务,每一个服务都用一个端口号。0 ~ 65535, 端口省略时,网站默认是80。 0~1023 是系统保留的端口号,所以尽量使用1024以上的。
 文件名(filename):包括该文件的完整路径。 默认的文件名是index.html
 引用(regerence):对资源内的某个引用,如http://www.google.com/index.html#chapter1.ppt
 
 7、URL 类
 URL url = new URL("http://www.baidu.com");
 
 public String getProtocol()  URL 协议
 public String getHost()  URL 的主机名
 public int getPort()  URL 的端口
 public String getFile()  URL的文件名
 public String getContent()  传输协议
 InputStream openStream()   打开该URL的输入流
 public String getPath   获取该URL的路径
 URLConnection openConnection() 打开由该URL 表示的位置的连接
 void set(string protocol,string host,int port,string file,string ref) 设置该URL的各域的值。
 
 8、使用步骤:
 1、创建URL对象
 2、使用URL 对象的openStream() 方法,返回一个InputStream
 3、从InputStream读入即可。
 
 9、URLConnection 表示应用程序和URL所标识的资源之间的通信连接,它是一个抽象类
 url.openConnection()
 
 void connect()
 Object getContent() 获取该URL的内容
 int getContentLength() 获取响应数据的内容长度
 String getContentType() 获取响应数据的内容类型。
 long getDate() 获取响应数据的创建时间
 long getExpiration() 获取响应数据的终止时间
 getInputStream()获取该连接的输入流
 getLastModified() 获取响应数据的最后修改时间
 getOutputStream 获取该连接的输出流
 
 public class TestNet {

public static void main(String[] args) {
  
  try {
   int c;
   URL url = new URL("http://skynet.skhynix-cq.com.cn/plusWare/Main.aspx/");
   URLConnection urlConnection = url.openConnection();
   
   System.out.println("the date is:" + new Date(urlConnection.getDate()));
   
   System.out.println("content-type:" + urlConnection.getContentType());
   
   InputStream inputStream = urlConnection.getInputStream();
   
   while((c=inputStream.read())!=-1){
    System.out.print((char)c);
    
    
   }
   
   inputStream.close();
   
  } catch (MalformedURLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  
 }

}
 
 
 10、套接字(socket)
 套接字是TCP/IP协议的编程接口,一个Socket 由一个IP地址和一个端口号唯一确定。网络上运行在两个不同主机的进程间进行双向通信的端点,用于建立两个不同应用程序之间通过网络进行通信的信道。
 位于不同主机的应用进程之间要在网络环境下进行通信,必须要在网络的每一段都要建立一个套接字。
 
 数据流套接字(Stream Socket) 有连接、可靠、双向、持续、点对点, 速度慢 代表是TCP
 
 数据包套接字(Datagram Socket)无连接。代表是UDP
 
 11、Socket 类
 用构造函数创建一个客户端套接字对象。
 
 close() 关闭套接字连接
 InetAddress getInetAddress() 获取当前连接的远程主机的Internet地址
 InputStream getInputStream() 获取Socket对应的输入流
 InetAddress getLocalAddress() 获取本地主机的Internet地址
 int getLocalPort()   获取本地连接的端口号
 OutputStream getOutputStream()  获取该Socket的输出流
 int getPort()            获取远程主机的端口号
 void shutdownInput()       关闭输入流
 void shutdownOutput()
 
 12、ServerSocket 类
 用在服务器端,用来监听所有来自指定端口的连接,并未每个新的连接创建一个Socket对象。
 ServerSocket(int port) 创建一个连接socket
 ServerSocket(int port ,int backlog):创建一个监听socket
 ServerSocket(int port, int backlog,InetAddress bindAddr) 监听socket
 
 Socket accept() 接受连接并返回一个socket对象。
 void close()
 InetAddress getInetAddress() 获取该服务器Socket 所绑定的地址
 int getLocalPort()  获取该服务器Socket所侦听的端口号
 int getSoTimeout()  获取连接的超时数
 void setSoTimeout(int timeout)表示 ServerSocket的accept()方法等待客户连接的超时时间。如果参数值未0,表示永远不会超时,进入阻塞状态。
 
 13、Socket通信:
 服务器端构造一个ServerSocket对象,在制定端口上进行监听,这时,服务器的线程处于等待状态。
 然后Client端构造Socket类对象,与服务器上的指定端口进行连接。服务器接收到连接请求后建立连接。通信依靠输入输出流进行。
 
 服务端: ServerSocket 对象  -- accept()方法
 客户端:socket 对象。请求连接
 Socket类 的getInputStream 和getOutputStream
 通信完成后close
 
 public class TestNet {

public static void main(String[] args) throws Exception{
  
  ServerSocket server = null;
  
  Socket pair = null;
  PrintStream outPrintStream = null;

server = new ServerSocket(2588);
  
  System.out.println("服务器运行,等待客户端连接");
  
  pair = server.accept(); // 等待连接
  
  String string = "hello network!";
  
  outPrintStream = new PrintStream(pair.getOutputStream());
  
  outPrintStream.println(string);
  
  pair.close();
  
  server.close();

}
 }
 
 // Client
 public class Client {

public static void main(String[] args) throws Exception {
  Socket client = null;
  
  client = new Socket("localhost",2588);  // 新建一个Socket,并进行连接
  
  BufferedReader buf = null;
  buf = new BufferedReader(new InputStreamReader(client.getInputStream()));
  
  String str = buf.readLine();
  
  System.out.println("服务器端输出内容:" + str);
  
  buf.close();
  client.close();
   
 }
}

时间: 2024-10-14 05:33:02

java 网络编程内丝的相关文章

从零探索Java网络编程01之 TCP/IP 与 Socket

最近完成了几项比较简单的项目, 日子有些松散, 终于是在996里偷了点闲暇时光, 想着来研究研究些啥吧?  一个普通的控制台日志映入了我的眼帘(孽缘呀): (图中使用 SpringBoot 的 log4j 来输出日志, logginglevel: debug, jdk版本为1.8) 造成这种现象的原因可能是, Mybatis在执行接口方法时, 实例化了多个Preparedstatement, 启用了不同的NIO线程, 但是其中, 咦?! 没错, NIO中出了一段IO!!! (天哪!), 在查询网

java网络编程serversocket

转载:http://www.blogjava.net/landon/archive/2013/07/24/401911.html Java网络编程精解笔记3:ServerSocket详解ServerSocket用法详解 1.C/S模式中,Server需要创建特定端口的ServerSocket.->其负责接收client连接请求. 2.线程池->包括一个工作队列和若干工作线程->工作线程不断的从工作队列中取出任务并执行.-->java.util.concurrent->线程池

java网络编程socket解析

转载:http://www.blogjava.net/landon/archive/2013/07/02/401137.html Java网络编程精解笔记2:Socket详解 Socket用法详解 在C/S通信模式中,client需要主动创建于server连接的Socket(套接字).服务器端收到了客户端的连接请求,也会创建与客户连接的Socket.Socket可看做是通信两端的收发器.server与client都通过Socket来收发数据. 1.构造Socket 1.Socket() 2.So

Java 网络编程学习总结

新手一枚,Java学习中,把自己学习网络编程的知识总结一下,梳理下知识,方便日后查阅,高手莫进. 本文的主要内容: [1]    网络编程认识                [2]  TCP/IP编程小例子 [3]   UDP编程小例子 [4]  简单线程池实例 一.网络编程的主要认识 Java是一种基于网络设计的语言,用于开发网络软件特别便利. 它对于网络的操作都是基于IP层以上的,也就是对TCP/UDP进行操作,所以java的网络编程又称为Socket编程. 一种是TCP/IP 网络编程,

Java网络编程技术1

1. Java网络编程常用API 1.1 InetAddress类使用示例 1.1.1根据域名查找IP地址 获取用户通过命令行方式指定的域名,然后通过InetAddress对象来获取该域名对应的IP地址.当然,程序运行时,需要计算机正常连接到Internet上. 例1. 根据域名查找IP地址 package Net; import java.net.InetAddress; import java.net.UnknownHostException; public class GetIP { pu

【Android实战】----从Retrofit源码分析到Java网络编程以及HTTP权威指南想到的

一.简介 接上一篇[Android实战]----基于Retrofit实现多图片/文件.图文上传中曾说非常想搞明白为什么Retrofit那么屌.最近也看了一些其源码分析的文章以及亲自查看了源码,发现其对Java网络编程及HTTP权威指南有了一个很好的诠释.一直以来,都信奉一个原则,在这个新技术日新月异的时代,如何在Java界立足,凭借的就两点: 1.基本功,包括:Java基本知识,(Java编程思想.Effective Java),Java进阶(Java虚拟机.Java设计模式).网络相关(这个时

java进阶学习 --java网络编程一(转)

Java - 网络编程完全总结(基础介绍) 本文主要是在网络编程方面的学习总结,先主要介绍计算机网络方面的相关内容,包括计算机网络基础,OSI参考模型,TCP/IP协议簇,常见的网络协议等等,在此基础上,主要介绍Java中的网络编程. 目录 一.概述 二.计算机网络 1.网络协议 2.网络体系结构 三.OSI参考模型 四.TCP/IP参考模型 五.常见网络协议 1.TCP协议 2.UDP协议 3.HTTP协议 六.计网常见问题 一.概述 计算机网络是通过传输介质.通信设施和网络通信协议,把分散在

实验五 Java网络编程及安全 实验报告 20135232王玥

北京电子科技学院(BESTI) 实     验    报     告 课程:Java程序与设计         班级:1352 姓名:王玥 学号:20135232 成绩:             指导教师:娄嘉鹏       实验日期:2015.6.9 实验密级:         预习程度:             实验时间:15:30-18:00 仪器组次:          必修/选修:选修        实验序号:5 实验名称:Java网络编程及安全 实验目的与要求:结对编程,实现客户端和

Java网络编程和NIO详解9:基于NIO的网络编程框架Netty

Java网络编程和NIO详解9:基于NIO的网络编程框架Netty 转自https://sylvanassun.github.io/2017/11/30/2017-11-30-netty_introduction/ netty是基于NIO实现的异步事件驱动的网络编程框架,学完NIO以后,应该看看netty的实现,netty框架涉及的内容特别多,这里只介绍netty的基本使用和实现原理,更多扩展的内容将在以后推出. 本系列文章首发于我的个人博客:https://h2pl.github.io/ 欢迎