同软件多个线程设置不同ip_5-13网络编程(附带多线程死锁,线程通信)

f278644fa3475499e4713091c6cffc24.png

0513多线程

死锁

当线程任务中出现了多个同步(多个锁)时,如果同步中嵌套了其他的同步。这时容易引发一种现象:程序出现无限等待,这种现象我们称为死锁

线程通信

生产者消费者模式

模拟街道案例

wait(),notify(),notifyAll()实现线程通信

068cecd95e85d616dc316e5466ccbaa5.png

c6bf2354f7e21c6d4bd88ecc40462f56.png

68533cd5b7d5838d6cf46aac71b50509.png

fe299a099155a6127655c2d8572b4230.png

6588916fca316899b88c1141b67759e5.png

0513网络编程

IP

定义网络上不同节点

IPV4(32位) IPV6(128位)

非注册IP:192.168.0.0~192.168.255.255

特殊IP:127.0.0.1 <==> local host 本机IP

http://java.net类 InetAddress

InetAddress address1=InetAddress.getLocalHost();

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

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

InetAddress address2=InetAddress.getByName("百度一下,你就知道");

端口

区分软件的

定义端口 2个字节 0~65535

相同的协议下端口不能冲突

端口自定义越大越好,8000以上,8000以内预留端口号

特殊的端口号:

80: http

8080: tomcat

1521: Oracle端口号

3306: mysql端口号

InetSocketAddress

此类实现 IP 套接字地址(IP 地址 + 端口号)

InetSocketAddress i=new InetSocketAddress("127.0.0.1",8888);

System.out.println(i.getAddress().getHostName());

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

System.out.println(i.getPort());

URL

统一资源定位符|器

互联网的三大基石: html http url

协议:http

* 域名:http://www.baidu.com

* 端口:80 默认80

* 资源:index.html?name=zhangsan&age=123#a

* 百度一下,你就知道

URL 代表一个统一资源定位符,它是指向互联网“资源”的指针

URL

URL url=new URL("http://www.baidu.com:80/index.html?name=zhangsan&age=123#a");

String getFile() 获取此 URL 的文件名。

System.out.println(url.getHost());

getQuery() 获取协议

网络爬虫原理

协议

规范 合同

udp

非面向连接的 写信 ,不安全,效率高,协议简单,开销小,大小有限制一般不超过60k

udp如何实现Socket编程:

发送端和接收端是平等的

DatagramSocket 此类表示用来发送和接收数据报包的套接字

DatagramSocket(int port)

DatagramPacket 此类表示数据报包。

udp发送流程

1.创建发送端,指明发送端的端口

2.准备数据,转为字节数组

3.把数据打包 指明接收端的地址和端口号 DatagramPacket

4.发送数据

5.关闭

UDP基本流程:接收端

1.构建接受端,指定接受端端口

2.准备字节数组,用来存储接口收据的

3.把字节数组打包

4.阻塞式接收

5.处理数据

6.关闭

tcp

面向连接的 打电话 ,安全,效率低,开销大 3次握手:1.拨号 2.回访:响应 3.发送数据 ,基于IO穿出数据

tcp基本流程:服务端

1.构建服务端 ServerSocket 指定端口 ServerSocket(int port)

2.阻塞式监听 Socket accept()

3.一个客户端就是一个socket IO操作

4.关闭

tcp基本流程:客户端

1.创建客户端 Socket 指定服务端的ip和端口 Socket(String host, int port)

http://2.io操作

3.关闭

应用层如何与传输层进行沟通?

通过Socket套接字

面向Socket编程,Socket相当于插座,是两层之间沟通的接口,不同协议,Socket的实现不一样

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值