![](https://i-blog.csdnimg.cn/blog_migrate/d4229fcebc6fb3a3db8fda4371d370ab.png)
![](https://i-blog.csdnimg.cn/blog_migrate/6eb900b56f7e18b0b719d2e21a88bd9e.png)
两类传输协议:TCP UDP
TCP就是Tranfer Control Protocol的简称,是一种面向连接的保证可靠传输的协议。通过TCP协议传输,得到的是一个顺序的无差错的数据流。发送
方和接收方的成对的两个socket之间必须建 立连接,以便在TCP协议的基础上进行通信,当一个socket(通常都是server socket)等待建立连接时,另一个
socket可以要求进行连接,一旦这两个socket连接起来,它们就可以进行双向数据传输,双方都可以进行发送 或接收操作。
UDP就是Use Datagram Protocol的简称,是一种无连接的协议,每个数据报都是一个独立的信息,包括完整的源地址或目的地址,它在网络上以任何可能的
路径传往目的地,因此能否到达目的地,到达目的地的时间以及内容的正确性都是不能被保证的。
Socket网络编程可以分为以下步骤
1.建立连接
2.打开Socket关联的输出流
3.数据流读取信息
4.关闭所有数据流和Socket
Socket实现原理机制
1.通信两端都有Socket
2.网络通信其实就是Socket间的通信
3.数据在两个Socket间通过IO传输
Socket 通信模型
进行网络通信时,Socket需要借助数据流来完成数据流的传递工作
如何实现多客户请求呢
采用多线程方式
一个专门负责监听的应用服务程序
一个专门负责处理请求的线程程序
DatagramPacket类
封装了数据报的数据,数据长度,目标地址和目标端口
DatagramSocket类
接收和发送DatagramPacket对象封装好的数据报
基于UDP协议的Socket网络编程步骤
1.利用DatagramPacket对象封装数据报
2.利用DatagramSocket发送数据报
3.利用DatagramSocket接收数据报
4.利用DatagramPacket处理数据报
使用两种协议实现简单的对话功能(简单的对话功能)
ServerSocket sk=new ServerSocket(11111); //2.监听 Socket s=sk.accept(); //打包数据 BufferedReader br=new BufferedReader(new InputStreamReader(s.getInputStream())); BufferedReader bw=new BufferedReader(new InputStreamReader(System.in)); OutputStream os=s.getOutputStream(); String line=null; while((line=br.readLine())!=null){ System.out.println("Client \t"+line); os.write(bw.readLine().getBytes()); } //释放资源 s.close(); //sk.close();
Socket sk=new Socket("192.168.111.1",11111); BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(sk.getOutputStream())); String line=null; while((line=br.readLine())!=null){ bw.write(line); bw.newLine(); bw.flush(); InputStream is=sk.getInputStream(); byte [] by=new byte[1024]; int num=is.read(by); String h=new String(by, 0, num); System.out.println("Service:\t"+h); } //br.close(); //bw.close(); sk.close(); }
实现结果
==============================================
=======================================
========================================