网络编程

it2022-05-05  205

网络编程

IP,端口,资源IP,是节点,用于寻找计算机,服务器等设备端口,是用于寻找节点所使用的软件区分资源,ULR是同一资源定位符 传输协议爬虫UDP发送和接收UDP发送UDP接收 TCP客户端,服务端数据传输TCP客户端TCP服务端

IP,端口,资源

IP,是节点,用于寻找计算机,服务器等设备

IP:定义网络上的节点(电脑,手机,pad,路由器…)…区分节点 分类: IPV4 : 32位 IPV6 : 128位

特点的IP: 局域网内部IP:192.168.0.0~192.168.255.255 127.0.0.1 : 默认本地IP localhost : 本地域名 DNS服务器:解析IP和域名之间的关系

InetAddress 此类表示互联网协议 (IP) 地址。 st() 返回本地主机。 static InetAddress getLoocalHost()返回本地主机。 static InetAddress getByName(String host) 在给定主机名的情况下确定主机的 IP 地址。 String getHostName() 获取此 IP 地址的主机名。 String getHostAddress() 返回 IP 地址字符串(以文本表现形式)。

端口,是用于寻找节点所使用的软件

2个字节: 0~65535 注意: 1.同一的协议下端口号不能冲突 2.自定义设置端口号建议设置越大越好,一般8000网上 预留端口号: 80: http 8080:tomcat 1521:Oracle 3306:Mysql

InetSocketAddress 此类实现 IP 套接字地址(IP 地址 + 端口号)。 InetSocketAddress(String hostname, int port) 根据IP|域名+端口号构建 InetAddress getAddress() 获取 InetAddress。 String getHostName() 获取 hostname。 int getPort() 获取端口号。

区分资源,ULR是同一资源定位符

URL:统一资源定位符 互联网三大基石: http html url url的构成:协议, 域名, 端口, 资源, 数据,锚点

URL(String spec) 构建url

传输协议

TCP(基于连接编程):安全,大小没先知,但是效率低 UDP:不安全,数据的大小有限制,但是效率高

爬虫

public class SpiderDemo05 { public static void main(String[] args) throws IOException { //定义URL-->要爬的页面地址 URL url=new URL("https://www.dianping.com"); HttpURLConnection conn=(HttpURLConnection)url.openConnection(); //设置请求方式 conn.setRequestMethod("GET"); //默认get //浏览器信息 conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36"); //输入流 InputStream getInputStream() BufferedReader read=new BufferedReader(new InputStreamReader(conn.getInputStream())); BufferedWriter writer=new BufferedWriter(new FileWriter("G:/aa.html")); //接收读取的数据 String msg=null; while((msg=read.readLine())!=null){ writer.wirte(msg); writer.nextLine(); } //关闭 read.close(); } }

UDP发送和接收

UDP发送

udp实现发送端的基本流程: 发送端和服务端是平等的 1.定义发送端 DatagramSocket(端口号) 指定发送端的端口号 2.准备数据 3.对数据打包 DatagramPacket(byte[] buf, int offset, int length, InetAddress address, int port) 构造数据报包,用来将长度为 length 偏移量为 offset 的包发送到指定主机上的指定端口号。 4.发送void send(DatagramPacket p) 5.关闭 void close() 关闭此数据报套接字。

public class UDPSend01 { public static void main(String[] args) throws IOException { System.out.println("-------------发送端------------"); //1.定义发送端 DatagramSocket(端口号) 指定发送端的端口号 DatagramSocket send=new DatagramSocket(8888); //发送端的端口号 //2.准备数据 byte[] str="呵呵呵呵呵".getBytes(); //3.打包 DatagramPacket packet=new DatagramPacket(str,0,str.length,new InetSocketAddress("127.0.0.1",9999)); //目的地的IP +端口 //4.发送 send.send(packet); //5.关闭 send.close(); } }

UDP接收

接收端基本流程: 1.定义接收端 DatagramSocket(int port) 2.准备字节数组 3.准备包裹用来接收数据 DatagramPacket(byte[] buf, int length) 4.接收 5.从包裹中获取数据 byte[] getData() 返回数据缓冲区。 int getLength() 返回将要发送或接收到的数据的长度。 6.关闭

public class UDPReceive02 { public static void main(String[] args) throws IOException { System.out.println("-------------接收端------------"); //1.定义接收端 DatagramSocket(int port) 指定接收端的端口号 DatagramSocket rec=new DatagramSocket(9999); //2.准备字节数组 byte[] arr=new byte[1024*60]; //3.打包用来接收数据 DatagramPacket packet=new DatagramPacket(arr,0,arr.length); //4.接收 阻塞式 rec.receive(packet); //5.处理数据 byte[] car=packet.getData(); System.out.println(new String(car,0,packet.getLength())); System.out.println(packet.getLength()); //6.关闭 rec.close(); } }

TCP客户端,服务端数据传输

TCP客户端

Socket 此类实现客户端套接字

客户端 1.定义客户端 Socket(String host, int port) 创建一个流套接字并将其连接到指定主机上的指定端口号。 2.IO操作 输出流OutputStream getOutputStream() 返回此套接字的输出流。 3.刷出 4.关闭

public class TCPClient03 { public static void main(String[] args) throws UnknownHostException, IOException { System.out.println("--------client------------"); //1.定义客户端 Socket(String host, int port) Socket socket=new Socket("localhost",9999); //2.输出流 DataOutputStream out=new DataOutputStream(socket.getOutputStream()); out.writeUTF("你好啊"); //刷出 out.flush(); //关闭 out.close(); socket.close(); } }

TCP服务端

ServerSocket 此类实现服务器套接字。 TCP服务端 1.定义服务端 ServerSocket(int port) 创建绑定到特定端口的服务器套接字。 2.阻塞式监听 一个客户端连接成功,就是一个socket 3.io操作 4.关闭

public class TCPServer04 { public static void main(String[] args) throws IOException { System.out.println("--------server------------"); //1.定义服务端 ServerSocket(int port) ServerSocket server=new ServerSocket(9999); //2.阻塞式监听 Socket socket=server.accept(); //3.获取流 DataInputStream read=new DataInputStream(socket.getInputStream()); //4.读取数据 String str=read.readUTF(); System.out.println(str); //5.关闭 read.close(); socket.close(); server.close(); } }

最新回复(0)