Rhythmk 一步一步学 JAVA (22) JAVA 网络编程

1、获取主机信息

?





1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

@Test

    public
void GetDomainInfo() throws
UnknownHostException {

        String domain = "www.baidu.com";

        InetAddress netAddress = InetAddress.getByName(domain);

        // 获取主机名

        System.out.println(netAddress.getHostName());

        // IP地址

        System.out.println(netAddress.getCanonicalHostName());

        InetAddress ip2domain = InetAddress.getByAddress(new
byte[] {

                (byte) 115, (byte) 239, (byte) 210, (byte) 26
});

        System.out.println(ip2domain.getCanonicalHostName());

        System.out.println(ip2domain.getHostName());

        /*

         * 输出: www.baidu.com 115.239.210.26 115.239.210.26 115.239.210.26

         */

    }

  2、URLEncode 跟 URLDecoder

?





1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

// URLDecoder和URLEncoder

    @SuppressWarnings("deprecation")

    @Test

    public
void URLEncode() {

        String result = URLEncoder.encode("我是Rhythmk,你呢?");

        System.out.println(result);

        // 输出:

        // %E6%88%91%E6%98%AFRhythmk%2C%E4%BD%A0%E5%91%A2%EF%BC%9F

    }

    @Test

    public
void URLDecoder() {

        String result = java.net.URLDecoder

                .decode("%E6%88%91%E6%98%AFRhythmk%2C%E4%BD%A0%E5%91%A2%EF%BC%9F");

        System.out.println(result);

        /*

         * 输出: 我是Rhythmk,你呢?

         */

    }

  

3、POST GET 请求

?





1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

@Test

public void Get() throws
IOException {

    URLConnection urlConnect;

    URL url = new
URL("http://www.baidu.com");

    urlConnect = url.openConnection();

    BufferedReader biStream = null;

    try
{

        urlConnect.connect();

        Map<String, List<String>> map = urlConnect.getHeaderFields();

        for
(String key : map.keySet()) {

            List<String> listKey = map.get(key);

            for
(String k : listKey) {

                System.out.println("*****************"
+ k);

            }

        }

        biStream = new
BufferedReader(new
InputStreamReader(

                urlConnect.getInputStream()));

        String html = "";

        String line = null;

        while
((line = biStream.readLine()) != null) {

            html += line;

        }

        System.out

                .println("*************************  HTML 内容  ***********************");

        System.out.println(html);

    } catch
(Exception e) {

        e.printStackTrace();

    } finally
{

        if
(biStream != null) {

            biStream.close();

        }

    }

}

@Test

public
void Post() throws
IOException {

    BufferedReader biStream = null;

    try
{

        URL url = new
URL("http://passport.rhythmk.com/signin");

         

        URLConnection urlConnect = url.openConnection();

        // 设置通用的请求属性

        urlConnect.setRequestProperty("accept", "*/*");

        urlConnect.setRequestProperty("connection", "Keep-Alive");

        urlConnect.setRequestProperty("user-agent",

                "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");

    

        

        // 发送POST请求必须设置如下两行  ,需要在connect  之前设定好

        urlConnect.setDoOutput(true);

         urlConnect.setDoInput(true);

        urlConnect.connect();

        // 获取URLConnection对象对应的输出流

        PrintWriter out = new
PrintWriter(urlConnect.getOutputStream());

        // 发送请求参数

        out.print("returnUrl=http%3A%2F%2Fwww.ciwong.com%2F&username=a&password=d");

        // flush输出流的缓冲

        out.flush();

        biStream = new
BufferedReader(new
InputStreamReader(

                urlConnect.getInputStream()));

        String html = "";

        String line = null;

        while
((line = biStream.readLine()) != null) {

            html += line;

        }

        System.out

                .println("************************POST*  HTML 内容  ***********************");

        System.out.println(html);

    } catch
(Exception e) {

        e.printStackTrace();

    } finally
{

        if
(biStream != null) {

            biStream.close();

        }

    }

}

  注意:

如果先

urlConnect.connect();

然后如下设置

urlConnect.setDoOutput(true);
urlConnect.setDoInput(true);

导致异常:

java.lang.IllegalStateException: Already
connected

at java.net.URLConnection.setDoOutput(URLConnection.java:849)
at
com.rhythmk.filedemo.net_demo1.Post(net_demo1.java:126) ....

Rhythmk 一步一步学 JAVA (22) JAVA 网络编程,码迷,mamicode.com

时间: 2024-08-01 16:51:40

Rhythmk 一步一步学 JAVA (22) JAVA 网络编程的相关文章

Java学习之网络编程实例

转自:http://www.cnblogs.com/springcsc/archive/2009/12/03/1616413.html 多谢分享 网络编程 网络编程对于很多的初学者来说,都是很向往的一种编程技能,但是很多的初学者却因为很长一段时间无法进入网络编程的大门而放弃了对于该部分技术的学习. 在学习网络编程以前,很多初学者可能觉得网络编程是比较复杂的系统工程,需要了解很多和网络相关的基础知识,其实这些都不是很必需的.首先来问一个问题:你 会打手机吗?很多人可能说肯定会啊,不就是按按电话号码

黑马程序员————java中的网络编程

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- java中的网络编程 一.网络编程概述:基于互联网的编程 就是用来实现网络互连的不同计算机上运行的程序间可以进行数据交换. 二.网络模型:OSI和TCP/IP 1.OSI(Open System Interconnection开放系统互连

第62节:探索Java中的网络编程技术

前言 感谢! 承蒙关照~ 探索Java中的网络编程技术 网络编程就是io技术和网络技术的结合,网络模型的定义,只要共用网络模型就可以两者连接.网络模型参考. 一座塔有七层,我们需要闯关. 第一层物理层->第二层数据链路层->第三层网络层->第四层传输层->第五层会话层->第六层表示层->第七层应用层. 物理层是主要定义物理设备标准,数据链路层是主要讲从物理层接收的数据进行MAC地址(网卡的地址)的封装与解封装.这层的数据较帧. 网络层是将从下层接收到的数据进行IP地址的

Java NIO之网络编程

最近在研究Java NIO和netty,曾经一度感觉很吃力,根本原因还是对操作系统.TCP/IP.socket编程的理解不到位. 不禁感叹,还是当初逃的课太多. 假如上天给我一次机会,能够再回到意气风发的校园时代,我想那些逃过的课,应该还是会逃. 毕竟在那个躁动的年纪,有很多的事情都比上课有意思. 不扯闲篇了,进入正题. 先重新理解一下socket编程,主要是基于TCP协议.上一张我从<Unix网络编程>里面截取的一张图 通过这张图,能够大概理解socket编程的几个函数功能和调用顺序,更为关

Java基础7——网络编程

计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统. 网络编程就是用来实现网络互联的不同计算机上运行的程序间可以进行数据交换 网络模型研究计算机网络之间以何种规则进行通信 网络模型一般是指OSI参考模型 TCP/IP参考模型 网络编程三要素 IP地址——网络中每台计算机的唯一标识 端口——计算机上每个应用程序的唯一标识 协议——通信之间的规则 计算机只能识别二进制的

Java中的网络编程

Java中的网路编程主要是Java的Socket编程,属于JavaEE中的高级的部分,以下内容是对java网路编程的一个小结,代码都是经过编译调试的 C/S程序应用:客户/服务器模式,如QQ客户端,客户端连到服务器上,一个C/S模式的应用必须有两套程序,一个是客户端的程序,一个是服务器程序. B/S程序应用:浏览器/服务器模式,如当下的各种网站都是B/S模式,所有的程序代码都在服务器上,用户通过浏览器去访问. C/S程序分为两种: 基于TCP协议:Socket(套接字), 可靠的编程: A->B

Java学习:网络编程

网络编程 1.1 网络编程基础知识 网络编程的目的就是指直接或间接地通过网络协议与其他计算机进行通讯.网络编程中有两个主要的问题,一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输.在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可以唯一地确定Internet上的一台主机.而TCP层则提供面向应用的可靠的或非可靠的数据传输机制,这是网络编程的主要对象,一般不需要关心IP层是如何处理数据的. 两类传输协议:tcp和udp TCP是T

Java中的网络编程-2

Socket编程:(一般的网络编程) <1> 两个 JAVA 应用程序可通过一个双向的网络通信连接, 实现数据交换, 这个双向链路的一段称为一个 Socket. <2> Socket 通常用来实现 Client-Server 连接. <3> java.net 包中定义的两个类 Socket 和 ServerSocket(阻塞式), 分别用来实现双向连接的 Client 和 Server 端. <4> 建立连接时, 所需的寻址信息为远程计算机的 IP 地址和端

java中的网络编程基本回顾

网络编程基本概念,TCP/IP协议简介 网络基础知识 网络编程的目的就是指直接或间接地通过网络协议与其他计算机进行通讯.网络编程中有两个主要的问题,一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输.在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可以唯一地确定Internet上的一台主机.而TCP层则提供面向应用的可靠的或非可靠的数据传输机制,这是网络编程的主要对象,一般不需要关心IP层是如何处理数据的. 目前较为流行的网络编程