【学习日记】java网络编程知识点总结
2015-11-16 14:03
429 查看
网络模型:OSI参考模型、 TCP/IP模型
OSI:应用层 表示层 会话层 传输层 网络层 数据链路层 物理层
TCP/IP:应用层 传输层 网际层 主机至网络层
常用协议
传输层TCP UDP
网际层 IP
应用层 HTTP FTP
网络通信要素:IP 地址、端口号、通讯协议
IP地址:网络设备的标识
端口号:为了区分计算机里面的应用程序而为每一个应用程序的标识
通讯协议:定义通信规则
TCP/UDP区别
UDP
1 将数据源和目的地封装成数据包中
2 不需要建立连接
3 每个数据报的大小限制在64KB
4 因无连接,是不可靠的协议
5 不需要简历连接,速度快TCP
1 建立连接,形参传输数据的通道
2 在连接中进行大数据量传输
3 通过三次握手完成连接
4 是可靠协议
5 必须建立连接,效率会稍低
Socket
1 是为网络服务提供的一种机制。
2 通信的两端都有Socket。
3 网络通信其实就是Socket间的通信。
4 数据在两个Socket间通过IO传输。
UDP协议传输
编写一个聊天程序。有收数据的部分,和发数据的部分。这两部分需要同时执行。那就需要用到多线程技术。一个线程控制收,一个线程控制发。因为收和发动作是不一致的,所以要定义两个run方法。而且这两个方法要封装到不同的类中。
代码如下
package testimport java.io.*;import java.net.*;/** * @author wangkun */class Send implements Runnable {//建立套件字private DatagramSocket ds;public Send(DatagramSocket ds) {this.ds = ds; }//重写run()方法public void run() {try{//从键盘获取数据BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in)); String line = null;while((line=bufr.readLine())!=null) {byte[] buf = line.getBytes(); DatagramPacket dp = new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.1.255"),10002); ds.send(dp);if("886".equals(line))break; } }catch (Exception e) {throw new RuntimeException("发送端失败"); } } } class Rece implements Runnable {//建立UDPsocket断点private DatagramSocket ds;public Rece(DatagramSocket ds) {this.ds = ds; }public void run() {try{while(true) {byte[] buf = new byte[1024];//定义数据包DPDatagramPacket dp = new DatagramPacket(buf,buf.length);//接收ds.receive(dp); String ip = dp.getAddress().getHostAddress(); String data = new String(dp.getData(),0,dp.getLength());if("886".equals(data)) { System.out.println(ip+"....离开聊天室");break; } System.out.println(ip+":"+data); } }catch (Exception e) {throw new RuntimeException("接收端失败"); } } }public class test5 {public static void main(String[] args) throws Exception { DatagramSocket sendSocket = new DatagramSocket(); DatagramSocket receSocket = new DatagramSocket(10002);new Thread(new Send(sendSocket)).start();new Thread(new Rece(receSocket)).start(); } }[p][strong]
相关文章推荐
- 【学习日记】java网络编程知识点总结
- 【学习日记】java网络编程知识点总结
- 【学习日记】有关java的IO的知识点总结
- Java 网络编程学习总结
- java学习日记(9)———socket,网络编程的学习
- 【学习日记】java多线程的知识点总结
- 黑马程序员-Java网络编程学习总结
- 黑马程序员--Java学习日记之GUI&网络编程
- Java基础学习总结(18)——网络编程
- 网络编程基础学习-Java基础学习总结
- 黑马程序员---java网络编程学习总结
- java基础编程学习过程中的知识点 -- 个人总结
- 【学习日记】java反射的知识点总结
- java基础学习总结——网络编程
- 【学习日记】有关java的IO的知识点总结
- java基础学习总结——网络编程
- 黑马程序员Java学习日记(8)网络编程
- Java基础之网络编程知识点总结
- 【学习日记】java反射的知识点总结
- Java学习:网络编程总结