Java网络编程

来源:互联网 发布:mac修改器 win7 编辑:程序博客网 时间:2024/06/04 18:04

这里写图片描述

一、基础概念

  • 1.java关于网络编程的包都在java.net下面
  • 2.Socket编程主要是指基于TCP/IP协议的网络编程
  • 3.网络上的两个程序通过一个双向的通讯连接实现数据的交换,这个双向链路的一端称为一个Socket。Socket通常用来实现客户方和服务方的连接。
  • 4.网络编程的目的就是指直接或间接地通过网络协议与其他计算机进行通讯
  • 5.Socket通常也称作”套接字”,用于描述IP地址和端口,是一个通信链的句柄。在Internet上的主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务
  • 6.路由器和交换机组成了核心的计算机网络,计算机只是这个网络上的节点以及控制等,通过光纤、网线等连接将设备连接起来,从而形成了一张巨大的计算机网络。
  • 7.网络最主要的优势在于共享:共享设备和数据,现在共享设备最常见的是打印机,一个公司一般一个打印机即可,共享数据就是将大量的数据存储在一组机器中,其它的计算机通过网络访问这些数据,例如网站、银行服务器等等
  • 8.域名的概念可以类比手机中的通讯簿,由于手机号码不方便记忆,所以添加一个姓名标识号码,在实际拨打电话时可以选择该姓名,然后拨打即可
  • 9.在创建socket时如果发生错误,将产生IOException,在程序中必须对之作出处理。所以在创建Socket或ServerSocket是必须捕获或抛出
  • 10.Socket通讯的一般过程:

    1) Server端Listen(监听)某个端口是否有连接请求
    2) Client端向Server端发出Connect(连接)请求
    3) Server端向Client端发回Accept(接受)消息。
    一个连接就建立起来了。Server端和Client端都可以通过Send,Write等方法与对方通信(一般通过IO流承载数据)

  • 11.对于一个功能齐全的Socket,一般都有以下四个基本步骤:

    1) 创建Socket;
    2) 打开连接到Socket的输入/出流;
    3) 按照一定的协议对Socket进行读/写操作;
    4) 关闭Socket.

二、服务端与客户端

1.Server服务器端:
    1) 创建ServerSocket对象,同时绑定监听端口             ServerSocket serverSocket = new ServerSocket(5555);     2) 通过accept()方法监听客户端的请求             Socket socket = serverSocket.accept();    3) 建立连接后,通过输入流读取客户端发送的请求信息                //   获取输入字节流,读取客户端请求信息             InputStream in = socket.getInputStream();             //   将字节流包装成字符流              InputStreamReader isr = new InputStreamReader(in);             //   为字符输入流添加缓冲              BufferedReader br = new BufferedReader(isr);             //   读取字符输入流中的数据信息             br.readLine();    4) 通过输出流向客户端发送响应信息             OutputStream out = socket.getOutputStream();             out.write();    5) 关闭相应资源                                    out.close();             in.close();             socket.close();             serverSocket.close();
2.Clien客户端:
    1)创建Socket对象,指明需要连接的服务器的地址和端口号             Socket socket = new Socket("127.0.0.1", 5555)    2)建立连接后,通过输出流向服务器端发送请求信息             //  获取输出字节流,向服务器端发送消息             OutputStream os = socket.getOutputStream();              //  将字节输出流包装为字符打印流             PrintWriter pw = new PrintWriter(os);             // 向服务器端发送请求信息              StringBuffer bf = new StringBuffer();              bf.append("用户名:").append("admin");              bf.append("密码:").append("123");              pw.write(bf.toString());                // 刷新缓存              pw.flush();    3)通过输入流获取服务器的响应信息             //  获取输入字节流,读取服务器端的响应信息             InputStream is = socket.getInputStream()             //  将输入字节流包装成字符字符流              InputStreamReader isr = new InputStreamReader(is);                  //  为字符流添加缓冲区              BufferedReader br = new BufferedReader(isr);             //  获取服务端的响应信息             br.readLine()               4)关闭相应资源             in.close();             br.close();             socket.close();

三、InetAddress类——该类的功能是代表一个IP地址,并且将IP地址和域名相关的操作方法包含在该类的内部

1.创建对象
    (1)    InetAddress inet1 = InetAddress.getByName("www.163.com");       //  使用域名创建对象    (2)    InetAddress inet2 = InetAddress.getByName("127.0.0.1");         //  使用IP创建对象    (3)    InetAddress inet3 = InetAddress.getLocalHost();                 //  获得本机地址对象
2.获得对象中存储的域名

String host = inet3.getHostName();

3.获得对象中存储的IP

String ip = inet3.getHostAddress();

四、基于URL的高层次Java网络编程

1.URL的组成 protocol://resourceName

   协议名(protocol)指明获取资源所使用的传输协议,如http、ftp、gopher、file等,资源名(resourceName)则应该是资源的完整地址,包括主机名、端口号、文件名或文件内部的一个引用

2.URL例子

1) 协议名://主机名
      http://www.sun.com/
2)协议名://机器名+文件名
      http://home.netscape.com/home/welcome.html
3)协议名://机器名+端口号+文件名+内部引用
      http://www.gamelan.com:80/Gamelan/network.html#BOTTOM

3.常用方法

1)创建URL

     (1) public URL (String spec); 通过一个表示URL地址的字符串可以构造一个URL对象。

URL urlBase=new URL(“http://www. 263.net/”)

    (2)public URL(URL context, String spec); 通过基URL和相对URL构造一个URL对象。

URL net263=new URL (“http://www.263.net/“);
URL index263=new URL(net263, “index.html”)

    (3) public URL(String protocol, String host, String file);

new URL(“http”,”www.gamelan.com”,”/pages/Gamelan.net. html”);

    (4) public URL(String protocol, String host, int port, String file);

URL gamelan=new URL(“http”,”www.gamelan.com”,80,”Pages/Gamelan.network.html”);

2)解析一个URL——一个URL对象生成后,其属性是不能被改变的,但是我们可以通过类URL所提供的方法来获取这些属性
  • public String getProtocol() 获取该URL的协议名。
  • public String getHost() 获取该URL的主机名。
  • public int getPort() 获取该URL的端口号,如果没有设置端口,返回-1。
  • public String getFile() 获取该URL的文件名。
  • public String getRef() 获取该URL在文件中的相对位置。
  • public String getQuery() 获取该URL的查询信息。
  • public String getPath() 获取该URL的路径
  • public String getAuthority() 获取该URL的权限信息
  • public String getUserInfo() 获得使用者的信息
  • public String getRef() 获得该URL的锚
3.从URL读取WWW网络资源
    URL url = new URL("http://www.cnblogs.com/linjiqin/");    BufferedReader in = new BufferedReader(newInputStreamReader(url.openStream()));    String inputLine;    while ((inputLine = in.readLine()) != null) {          System.out.println(inputLine);    }    in.close();
5.通过URLConnetction连接WWW——通过URL的方法openStream(),我们只能从网络上读取数据,如果我们同时还想输出数据, 我们必须先与URL建立连接,然后才能对其进行读写,这时就要用到类URLConnection了
public static void main(String[] args) throws Exception {              //  创建URL对象              URL url=new URL("http://www.javasoft.com/cgi-bin/backwards");              //  由URL对象获取URLConnection对象              URLConnection conn=url.openConnection();              //  由URLConnection获取输入流,并构造DataInputStream对象              DataInputStream dis=new DataInputStream(conn.getInputStream());              //  由URLConnection获取输出流,并构造PrintStream对象              PrintStream ps=new PrintStream(conn.getOutputStream());              String line=dis.readLine();              ps.println("client…");           //向服务器写出字符串 "client…"              }

参考网址

1.Java网络编程详解
2.Java网络编程总结
3.Java基础之网络编程知识点总结

注:文章是经过参考其他的文章然后自己整理出来的,有可能是小部分参考,也有可能是大部分参考,但绝对不是直接转载,觉得侵权了我会删,我只是把这个用于自己的笔记,顺便整理下知识的同时,能帮到一部分人。
ps : 有错误的还望各位大佬指正,小弟不胜感激

原创粉丝点击