同软件多个线程设置不同ip_5-13网络编程(附带多线程死锁,线程通信)
0513多线程
死锁
当线程任务中出现了多个同步(多个锁)时,如果同步中嵌套了其他的同步。这时容易引发一种现象:程序出现无限等待,这种现象我们称为死锁
线程通信
生产者消费者模式
模拟街道案例
wait(),notify(),notifyAll()实现线程通信
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的实现不一样
同软件多个线程设置不同ip_5-13网络编程(附带多线程死锁,线程通信)相关推荐
- Linux C/C++ 开发(学习笔记十一 ):TCP服务器(并发网络网络编程 一请求一线程)
Linux C/C++ 开发(学习笔记十一 ):TCP服务器(并发网络网络编程 一请求一线程) 一.TCP服务器(一请求一线程) 的原理 二.完整代码 三.测试 四.补充 一.TCP服务器(一请求一线 ...
- 8.Python基础学习笔记day8-正则表达式、网络编程、进程与线程
8.Python基础学习笔记day8-正则表达式.网络编程.进程与线程 一.正则表达式 ''' 1. [1,2,3,4]中任意取3个元素排列: A43 = 4x3x2 = 24itertools.pe ...
- linux网络编程(四)线程池
linux网络编程(四)线程池 为什么会有线程池? 实现简单的线程池 为什么会有线程池? 大多数的服务器可能都有这样一种情况,就是会在单位时间内接收到大量客户端请求,我们可以采取接受到客户端请求创建一 ...
- winform判断线程有没有完成_并发编程系列1:线程池的架构实现、大小配置、及四种线程池使用...
△ 公众号回复关键词"架构" 即可领取<1500+BAT架构及面试专题合集> 本篇为线程池系列文章之一,不经常使用线程池的童鞋,还有对几种线程的使用不甚了解的童鞋,可以 ...
- 【Java 并发编程】多线程、线程同步、死锁、线程间通信(生产者消费者模型)、可重入锁、线程池
并发编程(Concurrent Programming) 进程(Process).线程(Thread).线程的串行 多线程 多线程的原理 多线程的优缺点 Java并发编程 默认线程 开启新线程 `Ru ...
- 【CSDN软件工程师能力认证学习精选】Python网络编程(socket编程)
CSDN软件工程师能力认证(以下简称C系列认证)是由中国软件开发者网CSDN制定并推出的一个能力认证标准.C系列认证历经近一年的实际线下调研.考察.迭代.测试,并梳理出软件工程师开发过程中所需的各项技 ...
- Linux网络编程3——多进/线程并发服务器
视频链接 黑马程序员-Linux网络编程_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1iJ411S7UA?p=37 目录 一.高并发服务器 1.1 图 ...
- linux下网络编程设置非阻塞,UNIX网络编程 非阻塞connect的实现
一.<UNIX网络编程>-非阻塞connect 在一个TCP套接口被设置为非阻塞之后调用connect,connect会立即返回EINPROGRESS错误,表示连接操作正在进行中,但是仍未 ...
- 网络编程(36)—— 线程安全函数和非线程安全函数
今天研究下线程安全函数和非线程安全函数.什么是线程安全函数?我们知道在多线程编程中,线程安全问题是不容忽视的.只要存在多线程,就会存在多个线程访问同一段代码或者同一个全局变量的临界区,对于uc中标准函 ...
最新文章
- html5页面被键盘挡住,HTML5 虚拟键盘出现挡住输入框怎么办
- python 硬件自动化测试_村长告诉你:Python实现性能自动化测试竟然如此简单
- CentOS Linux 7编译安装Redis
- opencv图像-拼接线的处理
- Windows Server 2008 启用公共文件夹共享
- linux 下 ethtool 修改网卡eeprom
- idea打包Jar包
- 怀集天气预报软件测试,【天气】怀集要入夏?这份天气预报告诉你答案!
- 南阳OJ 题目97 兄弟郊游问题
- A股市股票行情实时数据最简封装API接口的python实现
- Visual Studio Ultimate 2013(VS2013旗舰版 下载地址及哈希校验)
- 课堂派作业第一题(附思路)已改完!
- 我国云计算中心大盘点
- 对于多人联机游戏中 游戏房间实现的想法
- APP行业基准营销数据怎么获取?快用这两个免费应用数据工具
- java之getResource方法
- 读书是在丰富你,读你自己
- AD使用笔记1 原理图与PCB布局同步实现
- ESP80266WiFi通信模块连接51单片机实现双向通信
- Office打开很慢解决办法