您的位置:首页 > 理论基础 > 计算机网络

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

2015-11-26 16:02 513 查看
——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-

一.概述

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