------- android培训、java培训、期待与您交流! ----------
在网络中主要执行的是客户端和服务端之间的传输或者是互访
客户端向服务端发送信息,服务端收到信息后,向客户端发送接收成功的提示
我们经常能够使用客户端的并发操作等:
在上网要下载文件的时候,需要一次下载多个文件,就要用到并发
QQ空间上传照片,需要一次同时选中多个照片,之后一起上传,也用到了并发等等
UDP:面向无连接的(客户端可以在服务端不开启的情况下,进行传输),不可靠 但是速度快 ,
TCP:面向连接的(客户端向服务端传输数据时,服务端必须是开启的状态),可靠的协议,但是效率低
TCP连接建立的时候3次握手,断开连接的4次握手的具体过程:
建立连接采用的3次握手协议,具体是指:
第一次握手是客户端connect连接到server,server accept client的请求
之后,
向client端发送一个消息,相当于说我都准备好了,你连接上我了,这是第二次握手,
第3次握手就是client向server发送的,就是对第二次握手消息的确认。
之后client和server就开始通讯了。
断开连接的4次握手,具体如下:
断开连接的一端发送close请求是第一次握手,
另外一端接收到断开连接的请求之后需要对close进行确认,发送一个消息,这是第二次握手,
发送了确认消息之后还要向对端发送close消息,要关闭对对端的连接,这是第3次握手,
而在最初发送断开连接的一端接收到消息之后,进入到一个很重要的状态time_wait状态,
最后一次握手是最初发送断开连接的一端接收到消息之后。对消息的确认。
UDP:
客户端:
DatagramSocket ds=new DatagramSocket(8888);
DatagramPacket dp=new DatagramPacket(buf,buf.length,InetAddress.getByName("127.0.0.1"),10000);
ds.send(dp); //通过send方法将数据包发出去
接收端:
DatagramSocket ds=new DatagramSocket(10000);
byte[] buf=new byte[1024];//定义数据包,用于存储收到的数据
DatagramPacket dp=new DatagramPacket(buf,buf.length);
ds.receive(dp);//通过receive方法将收到的数据存储
TCP:
客户端:
Socket s=new Socket("192.168.1.109",10003);
OutputStream out=s.getOutputStream();//为了发送数据,应该获取socket流中的读取流
out.write("tcp wo lai le ".getBytes());//向流中写入数据
服务端:
ServerSocket ss=new ServerSocket(10003);//创建Server服务,并监听一个端口
Socket s= ss.accept(); //获取连接过来的客户端对象 使用accept方法
InputStream in=s.getInputStream();//获取客户端发过来的数据,那么要使用客户端的读取流对象