为什么电风扇上要擦伤可以贴创可贴吗这个效果太全面了

文章转载自网络,作者观点不代表本网站立场,如需处理请联系客服
微小说精选其它文章
高考状元出炉,也许这就是穷人家孩子奋斗的意义
微小说精选
微小说HUGO每晚百万人陪你读微小说。01这两天,各地的高考成绩陆续公布,高考状元相继出炉。一个需要直面的真相是:状元多集中在省会或次省会的名校...
“致单身:我一个人熬过了所有的苦”
微小说精选
微小说HUGO每晚百万人陪你读微小说。嘿不 同 的 城 市相 同 的 你当你能一个人默默消化掉负面情绪的时候,你就真的长大了。1.我发现最近一段时间,我明...
淘宝购物返利技巧:一年能省一部 iPhone x,看教程
微小说精选
真能让你省钱:比如你在一个天猫优惠券群里买了一个5块钱包邮的12卷卫生纸。你是不是觉得已经很省钱啦?那么我告诉你,如果你添加返利机器...
19岁甘肃女孩被老师猥亵跳楼:“所有人都在叫我快跳”
微小说精选
微小说HUGO每晚百万人陪你读微小说。GIF人性能丑陋麻木到何种程度?这一场现实版《熔炉》的悲剧展现的淋漓尽致!学校本身是一个神圣的教育...
一半的婚姻,才是最好的模式
微小说精选
微小说HUGO每晚百万人陪你读微小说。婚姻不是1+1=2,而是0.5+0.5=1婚姻最好的模式是什么?很多人认为是1+1≥2,两个人在一起,应该要得到更多的可能与...
“我42岁,男朋友25岁”
微小说精选
微小说HUGO每晚百万人陪你读微小说。GIF洪欣嫁给比她小10岁的张丹峰;钟丽缇与小她12岁的张伦硕结婚;邓文迪离婚不久,就和小她17岁的男模查理西恩相恋;周海媚...
“老公家暴了我4小时,然后爱了我1周”
微小说精选
微小说HUGO每晚百万人陪你读微小说。GIF有的时候在想,我们国家最缺什么,我们女性最缺什么,缺的是法律意识。第一,不敢报警,第二,不知道这是不是违法...
欺骗你多年的小知识,今天终于找全了!
微小说精选
微小说HUGO每晚百万人陪你读微小说。01. 不吃早饭易得胆结石?是真的。即使不吃早饭,也一样会分泌胆汁,造成胆汁堆积容易形成胆结石。另外,不吃中饭和晚...
《大树之恩》,看哭无数人,建议收入教材
微小说精选
微小说HUGO每晚百万人陪你读微小说。很久很久以前,有一棵又高又大的树。一位小男孩,天天到树下来,他爬上去摘果子吃,在树荫下睡觉。他爱大树,大树也爱和...
小崔:面对流氓,就是干!
微小说精选
微小说精选电风扇上贴几个创可贴,效果太棒了,活了30年才知道!
责任编辑:
声明:该文观点仅代表作者本人,搜狐号系信息发布平台,搜狐仅提供信息存储空间服务。
今日搜狐热点热门推荐:
声明:本文由入驻搜狐公众平台的作者撰写,除搜狐官方账号外,观点仅代表作者本人,不代表搜狐立场。
这么简单实用的一招,
早知道早受益!
发给朋友们,大家一起试试~
  无论您有多忙,请花1秒钟时间把它放到你的圈子里!可能您的朋友也需要!谢谢!
欢迎举报抄袭、转载、暴力色情及含有欺诈和虚假信息的不良文章。
请先登录再操作
请先登录再操作
微信扫一扫分享至朋友圈
特别策划1508/条精选
国家二级心理咨询师,原301医院总护士长,毕业于北京大学医学院护理系…
以亲子阅读为切入点,致力于家庭关系的建造…
精选家庭教育资讯和原创育儿教育文章…
一个全职妈妈6年来育儿经验,自我疗愈的心灵成长体悟…
为妈妈们提供母婴知识、母婴时尚信息、育儿经验等…
暖姐姐为您提供育儿知识…他在电风扇上贴个创可贴,竟出现了神奇一幕…他在电风扇上贴个创可贴,竟出现了神奇一幕…大河客户端百家号浏览器版本过低,暂不支持视频播放还有下面的方法也可以试试哦~橘皮法除了风扇驱蚊法还可以把晒干的橘皮剪碎收集到易透风的小袋里橘子皮含有柠檬烯和芳樟醇蚊子很惧怕这种味道把小袋子摆放在门、窗附近蚊子闻味后自然不敢擅闯家门啦晚上的时候点燃少量橘子皮放在阻燃容器中这里注意不要让橘子皮起明火只要燃烧冒烟即可淡淡的柑橘清香能让蚊子避而远之燃烧茶叶法喝过的茶叶晒干后熏燃也具有同样效果茶叶燃烧时散发出的味道对蚊子而言具有刺激性而对人体则无害最新热文男神施一公来郑州了!这场科学盛宴,告诉家长培养孩子一定要关注这7个方面!附视频语录合辑这个证千万别丢!河南这些景区考生免费或半价!学子们快去游玩吧!来源:杭州交通91.8、小佳会生活、腾讯视频、高质量生活编辑:邱瑾本文由百家号作者上传并发布,百家号仅提供信息发布平台。文章仅代表作者个人观点,不代表百度立场。未经作者许可,不得转载。大河客户端百家号最近更新:简介:河南第一移动端。新闻有温度,知己一亿人。作者最新文章相关文章CSDN签约作者、稀土掘金专栏作者 & 简书推荐作者
Android:这是一份很详细的Socket使用攻略
Socket的使用在 Android网络编程中非常重要
今天我将带大家全面了解 Socket 及 其使用方法
1.网络基础
1.1 计算机网络分层
计算机网络分为五层:物理层、数据链路层、网络层、运输层、应用层
网络层:负责根据IP找到目的地址的主机
运输层:通过端口把数据传到目的主机的目的进程,来实现进程与进程之间的通信
1.2 端口号(PORT)
端口号规定为16位,即允许一个IP主机有2的16次方65535个不同的端口。其中:
0~1023:分配给系统的端口号
我们不可以乱用
:登记端口号,主要是让第三方应用使用
但是必须在IANA(互联网数字分配机构)按照规定手续登记,
:短暂端口号,是留给客户进程选择暂时使用,一个进程使用完就可以供其他进程使用。
在Socket使用时,可以用的端口号
1.3 C/S结构
定义:即客户端/服务器结构,是软件系统体系结构
作用:充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。
Socket正是使用这种结构建立连接的,一个套接字接客户端,一个套接字接服务器。
可以看出,Socket的使用可以基于TCP或者UDP协议。
1.4 TCP协议
定义:Transmission Control Protocol,即传输控制协议,是一种传输层通信协议
基于TCP的应用层协议有FTP、Telnet、SMTP、HTTP、POP3与DNS。
特点:面向连接、面向字节流、全双工通信、可靠
面向连接:指的是要使用TCP传输数据,必须先建立TCP连接,传输完成后释放连接,就像打电话一样必须先拨号建立一条连接,打完后挂机释放连接。
全双工通信:即一旦建立了TCP连接,通信双方可以在任何时候都能发送数据。
可靠的:指的是通过TCP连接传送的数据,无差错,不丢失,不重复,并且按序到达。
面向字节流:流,指的是流入到进程或从进程流出的字符序列。简单来说,虽然有时候要传输的数据流太大,TCP报文长度有限制,不能一次传输完,要把它分为好几个数据块,但是由于可靠性保证,接收方可以按顺序接收数据块然后重新组成分块之前的数据流,所以TCP看起来就像直接互相传输字节流一样,面向字节流。
TCP建立连接
必须进行三次握手:若A要与B进行连接,则必须
第一次握手:建立连接。客户端发送连接请求报文段,将SYN位置为1,Sequence Number为x;然后,客户端进入SYN_SEND状态,等待服务器的确认。即A发送信息给B
第二次握手:服务器收到客户端的SYN报文段,需要对这个SYN报文段进行确认。即B收到连接信息后向A返回确认信息
第三次握手:客户端收到服务器的(SYN+ACK)报文段,并向服务器发送ACK报文段。即A收到确认信息后再次向B返回确认连接信息
此时,A告诉自己上层连接建立;B收到连接信息后告诉上层连接建立。
这样就完成TCP三次握手 = 一条TCP连接建立完成 = 可以开始发送数据
三次握手期间任何一次未收到对面回复都要重发。
最后一个确认报文段发送完毕以后,客户端和服务器端都进入ESTABLISHED状态。
为什么TCP建立连接需要三次握手?
答:防止服务器端因为接收了早已失效的连接请求报文从而一直等待客户端请求,从而浪费资源
“已失效的连接请求报文段”的产生在这样一种情况下:Client发出的第一个连接请求报文段并没有丢失,而是在某个网络结点长时间的滞留了,以致延误到连接释放以后的某个时间才到达server。
这是一个早已失效的报文段。但Server收到此失效的连接请求报文段后,就误认为是Client再次发出的一个新的连接请求。
于是就向Client发出确认报文段,同意建立连接。
假设不采用“三次握手”:只要Server发出确认,新的连接就建立了。
由于现在Client并没有发出建立连接的请求,因此不会向Server发送数据。
但Server却以为新的运输连接已经建立,并一直等待Client发来数据。&- 这样,Server的资源就白白浪费掉了。
采用“三次握手”的办法可以防止上述现象发生:
Client不会向Server的确认发出确认
Server由于收不到确认,就知道Client并没有要求建立连接
所以Server不会等待Client发送数据,资源就没有被浪费
TCP释放连接
TCP释放连接需要四次挥手过程,现在假设A主动释放连接:(数据传输结束后,通信的双方都可释放连接)
第一次挥手:A发送释放信息到B;(发出去之后,A-&B发送数据这条路径就断了)
第二次挥手:B收到A的释放信息之后,回复确认释放的信息:我同意你的释放连接请求
第三次挥手:B发送“请求释放连接“信息给A
第四次挥手:A收到B发送的信息后向B发送确认释放信息:我同意你的释放连接请求
B收到确认信息后就会正式关闭连接;
A等待2MSL后依然没有收到回复,则证明B端已正常关闭,于是A关闭连接
为什么TCP释放连接需要四次挥手?
为了保证双方都能通知对方“需要释放连接”,即在释放连接后都无法接收或发送消息给对方
需要明确的是:TCP是全双工模式,这意味着是双向都可以发送、接收的
释放连接的定义是:双方都无法接收或发送消息给对方,是双向的
当主机1发出“释放连接请求”(FIN报文段)时,只是表示主机1已经没有数据要发送 / 数据已经全部发送完毕;
但是,这个时候主机1还是可以接受来自主机2的数据。
当主机2返回“确认释放连接”信息(ACK报文段)时,表示它已经知道主机1没有数据发送了
但此时主机2还是可以发送数据给主机1
当主机2也发送了FIN报文段时,即告诉主机1我也没有数据要发送了
此时,主机1和2已经无法进行通信:主机1无法发送数据给主机2,主机2也无法发送数据给主机1,此时,TCP的连接才算释放
1.5 UDP协议
定义:User Datagram Protocol,即用户数据报协议,是一种传输层通信协议。
基于UDP的应用层协议有TFTP、SNMP与DNS。
特点:无连接的、不可靠的、面向报文、没有拥塞控制
无连接的:和TCP要建立连接不同,UDP传输数据不需要建立连接,就像写信,在信封写上收信人名称、地址就可以交给邮局发送了,至于能不能送到,就要看邮局的送信能力和送信过程的困难程度了。
不可靠的:因为UDP发出去的数据包发出去就不管了,不管它会不会到达,所以很可能会出现丢包现象,使传输的数据出错。
面向报文:数据报文,就相当于一个数据包,应用层交给UDP多大的数据包,UDP就照样发送,不会像TCP那样拆分。
没有拥塞控制:拥塞,是指到达通信子网中某一部分的分组数量过多,使得该部分网络来不及处理,以致引起这部分乃至整个网络性能下降的现象,严重时甚至会导致网络通信业务陷入停顿,即出现死锁现象,就像交通堵塞一样。TCP建立连接后如果发送的数据因为信道质量的原因不能到达目的地,它会不断重发,有可能导致越来越塞,所以需要一个复杂的原理来控制拥塞。而UDP就没有这个烦恼,发出去就不管了。
很多的实时应用(如IP电话、实时视频会议、某些多人同时在线游戏等)要求源主机以很定的速率发送数据,并且允许在网络发生拥塞时候丢失一些数据,但是要求不能有太大的延时,UDP就刚好适合这种要求。所以说,只有不适合的技术,没有真正没用的技术。
1.6 HTTP协议
详情请看我写的另外一篇文章
2. Socket定义
即套接字,是一个对 TCP / IP协议进行封装 的编程调用接口(API)
即通过Socket,我们才能在Andorid平台上通过 TCP/IP协议进行开发
Socket不是一种协议,而是一个编程调用接口(API),属于传输层(主要解决数据如何在网络中传输)
成对出现,一对套接字:
Socket ={(IP地址1:PORT端口号),(IP地址2:PORT端口号)}
Socket的使用类型主要有两种:
流套接字(streamsocket) :基于 TCP协议,采用 流的方式 提供可靠的字节流服务
数据报套接字(datagramsocket):基于 UDP协议,采用 数据报文 提供数据打包发送的服务
具体原理图如下:
4. Socket 与 Http 对比
Socket属于传输层,因为 TCP / IP协议属于传输层,解决的是数据如何在网络中传输的问题
HTTP协议 属于 应用层,解决的是如何包装数据
由于二者不属于同一层面,所以本来是没有可比性的。但随着发展,默认的Http里封装了下面几层的使用,所以才会出现Socket & HTTP协议的对比:(主要是工作方式的不同):
Http:采用 请求—响应 方式。
即建立网络连接后,当 客户端 向 服务器 发送请求后,服务器端才能向客户端返回数据。
可理解为:是客户端有需要才进行通信
Socket:采用 服务器主动发送数据 的方式
即建立网络连接后,服务器可主动发送消息给客户端,而不需要由客户端向服务器发送请求
可理解为:是服务器端有需要才进行通信
5. 使用步骤
Socket可基于TCP或者UDP协议,但TCP更加常用
所以下面的使用步骤 & 实例的Socket将基于TCP协议
Socket socket = new Socket("192.168.1.32", 1989);
socket.isConnected());
&-- 操作1:接收服务器的数据 --&
InputStream is = socket.getInputStream()
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
br.readLine();
&-- 操作2:发送数据 到 服务器 --&
OutputStream outputStream = socket.getOutputStream();
outputStream.write(("Carson_Ho"+"\n").getBytes("utf-8"));
outputStream.flush();
os.close();
br.close();
socket.close();
6. 具体实例
实例 Demo 代码包括:客户端 & 服务器
本文着重讲解客户端,服务器仅采用最简单的写法进行展示
6.1 客户端 实现
步骤1:加入网络权限
android:name="android.permission.INTERNET" /&
步骤2:主布局界面设置
包括创建Socket连接、客户端 & 服务器通信的按钮
android:id="@+id/connect"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="connect" /&
android:id="@+id/disconnect"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="disconnect" /&
android:id="@+id/receive_message"
android:layout_width="match_parent"
android:layout_height="wrap_content" /&
android:id="@+id/Receive"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Receive from message" /&
android:id="@+id/edit"
android:layout_width="match_parent"
android:layout_height="wrap_content" /&
android:id="@+id/send"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="send"/&
步骤3:创建Socket连接、客户端 & 服务器通信
具体请看注释
MainActivity.java
package scut.carson_ho.socket_
import android.os.B
import android.os.H
import android.os.M
import android.support.v7.app.AppCompatA
import android.view.V
import android.widget.B
import android.widget.EditT
import android.widget.TextV
import java.io.BufferedR
import java.io.IOE
import java.io.InputS
import java.io.InputStreamR
import java.io.OutputS
import java.net.S
import java.util.concurrent.ExecutorS
import java.util.concurrent.E
public class MainActivity extends AppCompatActivity {
private Handler mMainH
private ExecutorService mThreadP
* 接收服务器消息 变量
InputStreamR
* 发送消息到服务器 变量
OutputStream outputS
* 按钮 变量
private Button btnConnect, btnDisconnect, btnS
private TextView Receive,receive_
private EditText mE
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
* 初始化操作
btnConnect = (Button) findViewById(R.id.connect);
btnDisconnect = (Button) findViewById(R.id.disconnect);
btnSend = (Button) findViewById(R.id.send);
mEdit = (EditText) findViewById(R.id.edit);
receive_message = (TextView) findViewById(R.id.receive_message);
Receive = (Button) findViewById(R.id.Receive);
mThreadPool = Executors.newCachedThreadPool();
mMainHandler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
receive_message.setText(response);
* 创建客户端 & 服务器的连接
btnConnect.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
mThreadPool.execute(new Runnable() {
public void run() {
socket = new Socket("192.168.1.172", 8989);
System.out.println(socket.isConnected());
} catch (IOException e) {
e.printStackTrace();
* 接收 服务器消息
Receive.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
mThreadPool.execute(new Runnable() {
public void run() {
is = socket.getInputStream();
isr = new InputStreamReader(is);
br = new BufferedReader(isr);
response = br.readLine();
Message msg = Message.obtain();
msg.what = 0;
mMainHandler.sendMessage(msg);
} catch (IOException e) {
e.printStackTrace();
* 发送消息 给 服务器
btnSend.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
mThreadPool.execute(new Runnable() {
public void run() {
outputStream = socket.getOutputStream();
outputStream.write((mEdit.getText().toString()+"\n").getBytes("utf-8"));
outputStream.flush();
} catch (IOException e) {
e.printStackTrace();
* 断开客户端 & 服务器的连接
btnDisconnect.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
outputStream.close();
br.close();
socket.close();
System.out.println(socket.isConnected());
} catch (IOException e) {
e.printStackTrace();
6.2 服务器 实现
因本文主要讲解客户端,所以服务器仅仅是为了配合客户端展示;
为了简化服务器使用,此处采用Mina框架
服务器代码请在eclipse平台运行
按照我的步骤一步步实现就可以无脑运行了
步骤1:导入Mina包
请直接移步到百度网盘:
步骤2:创建服务器线程
TestHandler.java
public class TestHandler extends IoHandlerAdapter {
public void exceptionCaught(IoSession session, Throwable cause) throws Exception {
System.out.println("exceptionCaught: " + cause);
public void messageReceived(IoSession session, Object message) throws Exception {
System.out.println("recieve : " + (String) message);
session.write("hello I am server");
public void messageSent(IoSession session, Object message) throws Exception {
public void sessionClosed(IoSession session) throws Exception {
System.out.println("sessionClosed");
public void sessionOpened(IoSession session) throws Exception {
System.out.println("sessionOpen");
public void sessionIdle(IoSession session, IdleStatus status) throws Exception {
步骤3:创建服务器主代码
TestHandler.java
package mina
import java.io.IOException
import java.net.InetSocketAddress
import org.apache.mina.filter.codec.ProtocolCodecFilter
import org.apache.mina.filter.codec.textline.TextLineCodecFactory
import org.apache.mina.transport.socket.nio.NioSocketAcceptor
public class TestServer {
public static void main(String[] args) {
NioSocketAcceptor acceptor = null
acceptor = new NioSocketAcceptor()
acceptor.setHandler(new TestHandler())
acceptor.getFilterChain().addLast("mFilter", new ProtocolCodecFilter(new TextLineCodecFactory()))
acceptor.setReuseAddress(true)
acceptor.bind(new InetSocketAddress(8989))
} catch (Exception e) {
e.printStackTrace()
至此,客户端 & 服务器的代码均实现完毕。
6.3 测试结果
点击 Connect按钮: 连接成功
输入发送的消息,点击 Send 按钮发送
服务器接收到客户端发送的消息
点击 Receive From Message按钮,客户端 读取 服务器返回的消息
点击 DisConnect按钮,断开 客户端 & 服务器的连接
6.4 源码地址
相信大家已经非常了解关于Socket的使用
下面我将继续对 Android 的网络编程进行讲解,有兴趣可以继续关注
请帮顶或评论点赞!因为你的鼓励是我写作的最大动力!
扫码向博主提问
专注分享Android领域
擅长领域:
自定义View
开源库源码分析
没有更多推荐了,}

我要回帖

更多关于 擦伤可以贴创可贴吗 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信