java基础11( 网络编程)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java基础11( 网络编程)相关的知识,希望对你有一定的参考价值。

  1. 网络编程三要素

      IP:一个计算机的标识

      端口:应用程序都会对应一个端口,用来进行通信,有效端口:0~65535,其中0~1024系统使用或保留端口。

      协议:两种协议(UDP,TCP)

      特殊IP地址:127.0.0.1本地回环地址用来做一些本地测试

    pingIP地址; 用来检测本机是否可以和指定的IP地址的计算机可以进行正常通讯

    ipconfig     用来查看IP地址

    xxx.xxx.xxx.255  广播地址

        

         端口:

               物理端口:物理设备对应的端口, 网卡口

               逻辑端口:用来标示我们的计算机上的进程,就是上文所说的端口

        协议:

            UDP

                把数据打成一个数据包 , 不需要建立连接

                数据包的大小有限制不能超过64k

                因为无连接,所以属于不可靠协议(可能丢失数据)

                因为无连接 ,所以效率高

            TCP

                需要建立连接,形成连接通道

                数据可以使用连接通道直接进行传输,无大小限制

                因为有链接,所以属于可靠协议

                因为有链接,所以效率低

 2.InetAddress类

         A.InetAddress概述:IP地址的描述类,为了方便我们对IP地址的获取和操作,java提供了一个类

      InetAddress 供我们使用,此类表示互联网协议 (IP) 地址。 

         B.InetAddress类的常见功能

              public static InetAddress getByName(String host)( host: 可以是主机名,也可以是IP地址的         字符串表现形式)

              public String getHostAddress()返回 IP 地址字符串(以文本表现形式)。

              public String getHostName()获取此 IP 地址的主机名。 


               //通过主机IP获取inetaddress对象

InetAddress address = InetAddress.getByName("192.168.20.16");

//返回 IP 地址字符串(以文本表现形式)

System.out.println(address.getHostAddress());

//获取此 IP 地址的主机名

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




3.UDP协议

       UDP协议:

           UDP通信步骤:

               发送端步骤(客户端):

                 A.创建UDP发送数据端Socket对象

                 B.创建数据包,并给出数据,把数据打包

                 C.通过Socket对象发送数据包 

                 D.释放资源

               接收端步骤(服务器端):

                 A.创建UDP接收数据端Socket对象

                 B.创建一个接收数据的数据包

                 C.接收数据,数据在数据包中

                 D.解析数据包,并把数据显示在控制台

                 E.释放资源


package com.xayd_03;


import java.net.DatagramPacket;

import java.net.DatagramSocket;


// UDP协议接收数据步骤:

// A:创建UDP接收数据端Socket对象

// B:创建一个接收数据的数据包

// C:接收数据,数据在数据包中

// D:解析数据包,并把数据显示在控制台

// E:释放资源

public class udpServer {

public static void main(String[] args) throws Exception {

//创建UDP接收数据端Socket对象

DatagramSocket ds = new DatagramSocket(2222);

//创建一个接收数据的数据包

byte [] bys = new byte [1024];

int len = bys.length;

DatagramPacket dp = new DatagramPacket(bys, len);

//接收数据

while(true){

ds.receive(dp);

//解析数据包,并把数据显示在控制台

byte[] data = dp.getData();

int length = dp.getLength();

System.out.println(new String(data,0,length));

}

}


}


package com.xayd_03;


import java.net.DatagramPacket;

import java.net.DatagramSocket;

import java.net.InetAddress;

import java.util.Scanner;


// UDP发送数据的步骤:

//  A:创建UDP发送数据端Socket对象

//  B:创建数据包,并给出数据,把数据打包

//  C:通过Socket对象发送数据包 

//  D:释放资源

 

public class udpClient {

public static void main(String[] args) throws Exception {

//创建udp发送数据端socket对象

DatagramSocket ds = new DatagramSocket();

InetAddress address = InetAddress.getByName("192.168.20.16");

int port = 2222;

//创建键盘录入对象

Scanner sc = new Scanner(System.in);

String line;

while((line=sc.nextLine())!=null){

//键盘录入数据

byte [] buf = "hello".getBytes();

int len = buf.length;

DatagramPacket dp = new DatagramPacket(buf, len, address, port);

//发送数据

   ds.send(dp);

}

//释放资源

ds.close();

}


}


4.TCP协议

        TCP协议:

           TCp协议通信步骤:

                发送端(客户端):

                   A.创建TCP协议发送端Socket对象,指定服务器IP及端口

                   B.获取输出流,并写数据

                   C.释放资源

 

                接收端(服务器端):

                   A.创建TCP协议接收端Socket对象

                   B.监听客户端连接

                   C.获取输入流,并读取数据,显示在控制台

                   D.释放资源

        

package com.xayd_05;

//用TCP协议写一个数据的发送和接收,接收端接收到数据之后给发送端一个反馈

import java.io.OutputStream;

import java.net.Socket;



public class tcpClient {

public static void main(String[] args) throws Exception {

//创建tcp客户端的socket对象

Socket sk = new Socket("192.168.20.16",2222);

//从通道中获取输出流对象

OutputStream os = sk.getOutputStream();

//给通道中写数据

os.write("how are you".getBytes());

//释放资源

sk.close();

}


}


 

package com.xayd_05;


import java.io.InputStream;

import java.io.OutputStream;

import java.net.ServerSocket;

import java.net.Socket;


public class tcpServer {

public static void main(String[] args) throws Exception {

//创建TCP协议接收端Socket对象

ServerSocket ss = new ServerSocket(2222);

//监听客户端连接

Socket sk = ss.accept();

//从通道中读取来自客户端的数据

InputStream is = sk.getInputStream();

//获取输入流,并读取数据,显示在控制台

byte[] bys = new byte[1024] ;

int len = is.read(bys) ;

System.out.println(new String(bys,0,len));

//给客户端反馈

OutputStream os = sk.getOutputStream();

os.write("fine,thinks".getBytes());

//释放资源

sk.close();

}

}


以上是关于java基础11( 网络编程)的主要内容,如果未能解决你的问题,请参考以下文章

错误记录Android Studio 编译报错 ( Could not determine java version from ‘11.0.8‘. | Android Studio 降级 )(代码片段

错误记录Android Studio 编译报错 ( Could not determine java version from ‘11.0.8‘. | Android Studio 降级 )(代码片段

JSP编程专题1之JSP基础

Java语言基础之方法的设计

Java开发最实用最好用的11个技术网站

20155307刘浩《网络对抗》逆向及Bof基础