黑马程序员——java基础--网络编程

来源:互联网 发布:数据库系统实现 视频 编辑:程序博客网 时间:2024/06/05 18:58

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-

一.概述

java网络编程可以满足网络间不同端点通讯需求,如即时通信,上传数据,下载数据等。
数据在网络从一端到另一端流动过程可以简单看作:
应用层(请求端)-表示层-会话层-传输层-网络层-数据链路层-物理层-网络层-传输层-会话层-表示层-应用层(服务端)
目前,我们学习java编程是基于传输层书写代码完成相应的通讯需求,其实质是建立Socket类对象来操作各种数据的编程,要实现通信,两端都必须建立Socket,他与IO流结合使用紧密。

二.TCP/UDP协议

TCP和UDP是传输层数据传递的规范协议,它规范了在这层数据应遵循什么规则传输。

  • UDP协议特点:
    • 1.将数据及源和目的封装成数据包,不需要建立连接
    • 2.每个数据报的大小限制在64K内
    • 3.没有连接通路,所以是不可靠协议
    • 4.不需要建立连接,速度快
    • Tcp协议特点:
      1. 建立连接形成传输数据的通道
    • 2.在连接中进行大数据量传输
    • 3.通过3次“握手”完成连接,是可靠协议
    • 4.必需建立连接,效率会稍低
    • 综上所述,结合其各自特点,TCP协议提供可靠的服务主要用于一次传输大量报文的情形,如文件传输,远程登录
    • 等,UDP协议提供高效率的服务,如视频聊天,音频和多媒体应用等。

三.实际应用

1.结合UDP协议特点,进行实例编程:
/*
编写一个聊天程序,这是一个通过udp协议进行广播形式发送数据包。
有收数据的部分和发数据的部分,这两部分需同时执行,所以用到多线程技术。
一个线程控制收,一个线程控制发
因为收发动作是不一致的,所以要定义两个run方法,将其封装在不同类中。
编写一个聊天程序。
有收数据的部分和发数据的部分,这两部分需同时执行,所以用到多线程技术。

一个线程控制收,一个线程控制发
因为收发动作是不一致的,所以要定义两个run方法,将其封装在不同类中。
*/
这里写图片描述
这里写图片描述
可以使用如下代码进行广播传递数据包,另外IP是个人电脑实际IP

class Test41 {
public static void main(String[] args) throws Exception
{
DatagramSocket a = new DatagramSocket();
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
String line = null;
while((line = bufr.readLine())!=null)
{
if(“886”.equals(line))
break;
byte[] buf = line.getBytes();
DatagramPacket dp =
new DatagramPacket(buf,buf.length,InetAddress.getByName(“192.168.3.102”),10002);
a.send(dp);
}
}
}

这里写图片描述
2.TCP应用编程
2.1.先定义一个服务端,服务端接受到客户端数据后,返回确认信息
这里写图片描述
这里写图片描述
2.2在定义一个客户端,客户端会发出信息给服务端,发送成功后会收到服务端反馈的信息。
这里写图片描述
这里写图片描述
3.自定义浏览器服务端
这里写图片描述
这里写图片描述
此程序时创建一个浏览器服务端,当浏览器输入IP以及对应端口,将会收到服务端反馈的信息。

0 0
原创粉丝点击