网络编程

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();
	}
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值