黑马程序员——java基础--网络编程
2015-11-26 16:02
513 查看
——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-
数据在网络从一端到另一端流动过程可以简单看作:
应用层(请求端)-表示层-会话层-传输层-网络层-数据链路层-物理层-网络层-传输层-会话层-表示层-应用层(服务端)
目前,我们学习java编程是基于传输层书写代码完成相应的通讯需求,其实质是建立Socket类对象来操作各种数据的编程,要实现通信,两端都必须建立Socket,他与IO流结合使用紧密。
UDP协议特点:
1.将数据及源和目的封装成数据包,不需要建立连接
2.每个数据报的大小限制在64K内
3.没有连接通路,所以是不可靠协议
4.不需要建立连接,速度快
Tcp协议特点:
建立连接形成传输数据的通道
2.在连接中进行大数据量传输
3.通过3次“握手”完成连接,是可靠协议
4.必需建立连接,效率会稍低
综上所述,结合其各自特点,TCP协议提供可靠的服务主要用于一次传输大量报文的情形,如文件传输,远程登录
等,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以及对应端口,将会收到服务端反馈的信息。
一.概述
java网络编程可以满足网络间不同端点通讯需求,如即时通信,上传数据,下载数据等。数据在网络从一端到另一端流动过程可以简单看作:
应用层(请求端)-表示层-会话层-传输层-网络层-数据链路层-物理层-网络层-传输层-会话层-表示层-应用层(服务端)
目前,我们学习java编程是基于传输层书写代码完成相应的通讯需求,其实质是建立Socket类对象来操作各种数据的编程,要实现通信,两端都必须建立Socket,他与IO流结合使用紧密。
二.TCP/UDP协议
TCP和UDP是传输层数据传递的规范协议,它规范了在这层数据应遵循什么规则传输。UDP协议特点:
1.将数据及源和目的封装成数据包,不需要建立连接
2.每个数据报的大小限制在64K内
3.没有连接通路,所以是不可靠协议
4.不需要建立连接,速度快
Tcp协议特点:
建立连接形成传输数据的通道
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以及对应端口,将会收到服务端反馈的信息。
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树
- [原创]java局域网聊天系统