欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

网络编程基础

程序员文章站 2022-07-07 08:24:57
1.网络编程: 多台计算机通过物理设备(网线,wifi等)链接起来,形成了一个网络结构。 2.网络编程的三要素: IP地址:即计算机在网络中的编号. 端口号:即程序在计算机中的一个编号。0--65535,1024之前的端口号禁止使用。 网络协议:分为UDP协议和TCP协议 UDP协议:不需要建立稳定 ......

1.网络编程: 多台计算机通过物理设备(网线,wifi等)链接起来,形成了一个网络结构。

 

2.网络编程的三要素:

  IP地址:即计算机在网络中的编号.

 

  端口号:即程序在计算机中的一个编号。0--65535,1024之前的端口号禁止使用。

 

  网络协议:分为UDP协议和TCP协议

    UDP协议:不需要建立稳定的链接,不可靠,安全性低,但效率高,大小有限制(64k)。

    TCP协议:必须建立连接,安全性高,速度慢,效率低,大小无限制。

 

3.InetAddress:java中用来表示ip地址
  static InetAddress getByName(String host); //host可以是主机名,也可以是Ip地址
  String getHostAddress(); //返回 IP 地址字符串(以文本表现形式)。
  String getHostName(); //获取主机名。
  static InetAddress getLocalHost(); //获取本机的ip地址

4.网络编程UDP协议-发送端
  步骤:
  1.创建发送端Socket对象(DatagramSocket)。因为是发送端的Socket,所以不需要指定端口号
  2.准备数据,并且打包。DatagramPacket
  3.发送数据
  4.释放资源
  案例:

 1       //1.创建发送端Socket对象(DatagramSocket)。因为是发送端的Socket,所以不需要指定端口号
 2     DatagramSocket ds = new DatagramSocket();
 3     //2.准备数据,并且打包。DatagramPacket
 4     //准备数据
 5     byte[] bys = "hello udp,im comming!".getBytes();
 6     //指定接收方(收件人)的ip地址
 7     InetAddress address = InetAddress.getByName("127.0.0.1");
 8     //端口号
 9     int port = 8888;
10     DatagramPacket dp = new DatagramPacket(bys,bys.length,address,port);
11     //3.发送数据
12     ds.send(dp);
13     //4.释放资源
14     ds.close();

 


    

5.网络编程UDP协议-接收端
  步骤:
  1.创建接收端的Socket对象(DatagramSocket)。因为是接收端,所以要明确自己是谁(端口)
  2.准备容器。DatagramPacket
  3.接收数据。签收
  4.解析
  5.释放资源
    案例:

 1 //1.创建接收端的Socket对象(DatagramSocket)。因为是接收端,所以要明确自己是谁(端口),该端口号必须和发送端的完全一致。
 2     DatagramSocket ds = new DatagramSocket(8888);
 3     //2.准备容器。DatagramPacket
 4     //byte[] bys = new byte[1024];
 5     //DatagramPacket dp = new DatagramPacket(bys,bys.length);
 6     DatagramPacket dp = new DatagramPacket(new byte[1024],1024);
 7     //3.接收数据。签收。如果没有人发送数据,则程序在这里一直等待,直到有人发送数据。
 8     ds.receive(dp);
 9     //4.解析。当数据被接收之后,都放在了DatagramPacket中,所以,所谓的解析数据,其实就是解析DatagramPacket
10     InetAddress address = dp.getAddress(); //获取发送方的ip地址
11     int port = dp.getPort(); //获取发送方的端口号
12     byte[] data = dp.getData(); //获取发送的数据    
13     int length = dp.getLength(); //获取具体收到数据的长度
14     System.out.println("sender ---> " + address.getHostAddress());
15     System.out.println(new String(bys,0,length));
16     System.out.println(port);
17     //5.释放资源
18     ds.close();

 


    

6.网络编程TCP协议-客户端
  步骤:
  1.创建Socket对象。指定“服务端”的ip地址和端口号
  2.传输数据
  如果给“服务端”发消息,用输出流写。
  如果接收“服务端”发送的数据,则用输入流读。
  3.释放资源
    案例:
    

 1 //1.创建Socket对象。指定“服务端”的ip地址和端口号
 2     Socket s = new Socket("127.0.0.1", 10010);
 3     // 给服务端发消息
 4     OutputStream os = s.getOutputStream();
 5     os.write("hello!!!".getBytes());
 6     os.close();
 7 
 8     // 接收“服务端”发送过来的数据
 9     InputStream is = s.getInputStream();
10     byte[] bys = new byte[1024];
11     int len = is.read(bys);
12     System.out.println(new String(bys, 0, len));
13 
14     //3.释放资源
15     s.close();

 

 

 

6.网络编程TCP协议-服务端
  步骤:
  1.创建ServerSocket对象,指定端口号
  2.调用accept()方法获取Socket对象。如果有客户端访问,则该方法执行,得到一个Socket。如果没有客户端访问一直等待。
  3.传输数据
  如果给“客户端”发消息,用输出流写。
  如果接收“客户端”发送的数据,则用输入流读。
  4.释放资源
    案例:
    

 1 //1.创建ServerSocket对象,指定端口号
 2     ServerSocket ss = new ServerSocket(10010);
 3     //2.调用accept()方法获取Socket对象。如果有客户端访问,则该方法执行,得到一个Socket。如果没有客户端访         问,就一直等待。
 4     Socket s = ss.accept();    
 5     //接收“客户端”发送过来的数据
 6     InputStream is = s.getInputStream();
 7     byte[] bys = new byte[1024];
 8     int len = is.read(bys);
 9     System.out.println(new String(bys,0,len));
10 
11     //向“客户端”发送数据    
12     OutputStream os = s.getOutputStream();
13       os.write("hello!!!".getBytes());
14     os.close();
15 
16     s.close();