• java 网络教程


    转载自并发编程网 – ifeve.com

    Java提供了非常易用的网络API,调用这些API我们可以很方便的通过建立TCP/IP或UDP套接字,在网络之间进行相互通信,其中TCP要比UDP更加常用

     Java TCP网络基础

    通常情况下,客户端打开一个连接到服务器端的TCP/IP连接,然后客户端开始与服务器之间通信,当通信结束后客户端关闭连接,过程如下图所示:

      JavaSocket类和ServerSocket

    当客户端想要打开一个连接到服务器的TCP/IP连接时,就要使用到Java Socket类。socket类只需要被告知连接的IP地址和TCP端口,其余的都有Java实现。

    	public  void scoketTest () throws UnknownHostException, IOException{
    		
              //创建Socket Socket so = new Socket("192.168.200.13",80); //Socket发送数据,要通过Socket发送数据,我们需要获取Socket的输出流(OutputStream) OutputStream out= so.getOutputStream(); out.write("nihao".getBytes()); /** * 想要通过网络将数据发送到服务器端,一定不要忘记调用flush()方法。 * 操作系统底层的TCP/IP实现会先将数据放入一个更大的数据缓存块中,而缓存块的大小是与TCP/IP的数据包大小相适应的 * 调用flush()方法只是将数据写入操作系统缓存中,并不保证数据会立即发送 */ out.flush(); out.close(); //Socket读取数据,从Socket中读取数据,我们就需要获取Socket的输入流(InputStream) InputStream in=so.getInputStream(); in.read(); /** * 从Socket的输入流中读取数据并不能读取文件那样,一直调用read()方法直到返回-1为止 * 因为对Socket而言,只有当服务端关闭连接时,Socket的输入流才会返回-1 * 而是事实上服务器并不会不停地关闭连接,假设我们想要通过一个连接发送多个请求,那么在这种情况下关闭连接就显得非常愚蠢。 */ in.close(); //关闭Socket,当使用完Socket后我们必须将Socket关闭,断开与服务器之间的连接。 so.close(); }

    假如我们想要打开一个监听服务,来监听客户端连接某些指定TCP端口的连接,那就需要使用Java ServerSocket类。当客户端通过Socket连接服务器端的ServerSocket监听时,服务器端会指定这个连接的一个Socket,此时客户端与服务器端间的通信就变成Socket与Socket之间的通信。

    	public void serverSocket () throws IOException{
    //创建ServerSocket类来监听9000端口 ServerSocket serverSocket = new ServerSocket(9000); //监听请求的连接,要获取请求的连接需要用ServerSocket.accept()方法。该方法返回一个Socket类,该类具有普通java Socket类的所有特性 Socket so = serverSocket.accept(); //关闭客户端Socket so.close(); //关闭服务端Sockets,要关闭服务的时候需要关掉 ServerSocket连接。 serverSocket.close(); }

     在java.net包中包含两个有趣的类:URL类和URLConnection类。这两个类可以用来创建客户端到web服务器(HTTP服务器)的连接

    	public void urlTest() throws IOException {
    		
    		URL url = new URL("http://www.baidu.com");		
    		URLConnection connection =url.openConnection();		
    		InputStream in= connection.getInputStream();		
    		int data = in.read();		
    		while (data!=-1) {
    			System.out.println((char)data);
    			data = in.read();
    		}		
    		in.close();
    		
    		/**
    		 * 默认情况下URLConnection发送一个HTTP GET请求到web服务器。
    		 * 如果你想发送一个HTTP POST请求,要调用URLConnection.setDoOutput(true)方法
    		 * 一旦你调用了setDoOutput(true),你就可以打开URLConnection的OutputStream
    		 */
    		connection.setDoOutput(true);
    		OutputStream out= connection.getOutputStream();
    			//TODO
    	}
    

     URL类打开一个本地文件系统文件

    	private void urlReadFileTest() throws Exception {
    		/**
    		 * URL也被叫做统一资源定位符。如果你的代码不关心文件是来自网络还是来自本地文件系统,URL类是另外一种打开文件的方式
    		 * 这和通过HTTP访问一个web服务器上的文件的唯一不同处就是URL:"file:/c:/data/test.txt"
    		 */
    		URL url = new URL("file:/c:/data/test.txt");
    		URLConnection urlConnection = url.openConnection();
    		InputStream input = urlConnection.getInputStream();
    		int data = input.read();
    		while(data != -1){
    			System.out.print((char) data);
    			data = input.read();
    		}
    		input.close();
    	}
    『愿你我既可以朝九晚五,又能够浪迹天涯』
  • 相关阅读:
    java修改应用程序标题栏
    电动双轮车
    Oracle执行计划相关(待补充)
    SQL中IN和EXISTS用法的区别
    union all与union all
    equals与hashcode
    文件上传的整个流程
    adwords与adsence
    struts2文件上传大小
    为什么是UUID做主键
  • 原文地址:https://www.cnblogs.com/zjwwljty/p/6873759.html
Copyright © 2020-2023  润新知