黑马程序员——Java网络编程之UDP传输

网络编程

网络模型

通讯要素:InetAddress(对象):ip地址,网络中设备的标识,不可记忆,可用主机名,本地回环地址:127.0.0.1主机名localhost

端口号

传输协议:UDP,将数据的源及目的封装成数据包中,不需要建立连接,每个数据包的大小限制在64K内,无连接,是不可靠协议,不需要建立连接,速度快。力求速度,不求数据的准确性。比如聊天软件,网络会议。

TCP:建立连接,形成传输数据的通道,在连接中进行大数据量传输,通过三次握手完成连接,是可靠协议,必须建立连接效率稍低。

Socket

Socket就是为网络服务提供的一种机制,通信的两端都要有Socket。网络间的通信其实就是Socket间的通信,网络通信就是两个Socket间通过I/O传输。

UDP传输:DatagramSocket和DatagramPacket根据包中的信息从一台机器投递到另一台机器。凡是带端口的都是用来构造发送数据包的。写Socket要理解流程。

class Send implements Runnable{

//1.通过DatagramSocket,建立 Scoket端点

private DatagramSocket s ;

public Send( DatagramSocket
s){

this. s= s;

}

public void run() {

//获取控制台数据

BufferedReader
buffreader =new BufferedReader(new InputStreamReader(System.in)) ;

String
str ;

byte[] buff =new byte[ 1024];

try {

while((str =buffreader .readLine ())!= null){

if("886" .equals (str))

break;

buff =str .getBytes ();

//2.将数据通过DatagramPacket将数据封装成数据包,要包含数据,目标IP和目标端口

DatagramPacket
data=

new DatagramPacket( buff, buff.length,InetAddress.getByName("127.0.0.1") ,10071 );

//3.调用Socket的send方法,发送数据。

s. send(data );

s. close();

}

catch (Exception e ) {

// TODO: handle exception

throw new RuntimeException("chulibuliao" );

}

}

}

class Rece implements Runnable{

//1.通过DatagramSocket建立Soket服务。接收端建立Socket服务的时候一般要监听一个端口。

private DatagramSocket s ;

public Rece( DatagramSocket
s){

this. s= s;

}

public void run() {

// TODO Auto-generated method stub

try {

while ( true){

//2.定义数据包,用来接受源传送过来的数据包

byte[] buff =new byte[ 1024];

DatagramPacket
dp=new DatagramPacket(buff, buff.length) ;

//3.接收源的数据包,装入预先定义好的数据包

s. receive(dp );

//4.将不同的数据和信息分别取出

String
ip=dp.getAddress() .getHostAddress ();

String
data=new String(dp.getData() ,0 ,dp .getLength ());

System .out.println( ip+ ">>>"+data );

s. close();

}

catch (Exception e ) {

// TODO: handle exception

throw new RuntimeException("shicu" );

}

}

}

public class WeChat {

public static void main (String[] args) throws Exception {

// TODO Auto-generated method stub

DatagramSocket sendSocket=new DatagramSocket();

DatagramSocket receSocket=new DatagramSocket(10071 ); //接收端需要监听窗口

new Thread( new Send( sendSocket)).start() ;

new Thread( new Rece( receSocket)).start() ;

}

}

黑马程序员——Java网络编程之UDP传输,布布扣,bubuko.com

时间: 2024-10-07 06:29:07

黑马程序员——Java网络编程之UDP传输的相关文章

黑马程序员【网络编程之UDP协议】

UDP协议 UDP(User Datagram Protocol)也就是用户数据报协议,是一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768是UDP的正式规范. 提到无连接数据传输,那我们首先想到的就是不可靠,数据丢失等等,那么在我们的日常软件中,UDP协议到底都应用在什么场景上呢?举一个大家比较熟悉的例子,就是我们平时所用的聊天软件,因为我们的聊天软件所传输的数据并非是重要数据. 通过ip和端口号,我们可以实现一个小的聊天软件,有兴趣的朋友可以在局域网内通过

浅析Java网络编程之UDP传输(一)

网络传输方式一般有两种--TCP和UDP.本文用于简单了解一下UDP传输方式. 一.UDP有何特点? 1.面向无连接的: 2.面向报文的,且每一份报文不超过64KB: 3.不可靠但高效(不用建立连接): 4.支持一对一.一对多.多对一.多对多的交互通讯: 对于这些特点,没有什么为什么,事实而已啦! 二.在Java中怎么玩UDP? 在Java中,将建立UDP服务相关操作封装到了DatagramSocket类中,将数据报相关操作封装到了DatagramPacket类中. 三.具体玩的思路是什么? U

java网络编程之UDP实例

package Socket; import java.net.DatagramPacket; import java.net.InetAddress; public class Dgram { public static DatagramPacket toDatagram(String s, InetAddress destIA, int destPort) { byte[] buf = new byte[s.length() + 1]; s.getBytes(0, s.length(), b

黑马程序员 ---------- Java网络技术之 ---正则表达式 (Day06)

---------------------- ASP.Net+Unity开发..Net培训.期待与您交流! ---------------------- 正则表达式 正则表达式:基本知识 1  字符,   2 字符类 , 3 预定义字符类 , 4 边界匹配器 ,5 Greedy 数量词,6 Logical 运算符 详解: 1 字符 x   字符 x \\ 反斜线字符 \0n 带有八进制值 0 的字符 n (0 <= n <= 7) \0nn 带有八进制值 0 的字符 nn (0 <= n

黑马程序员------Java网络编程学习总结

Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! 网络模型: OSI参考模型 TCP/IP参考模型 网络参考模型图 网络通讯的要素: IP地址:InetAddress 网络中设备的标识 不容易记忆,可以用主机名 本地回环地址:127.0.0.1:主机名:localhost 端口号 用于标识进程的逻辑地址,不同进程的标识 有效端口:0~65535,其中0~1024为系统使用端口或保留端口 网络协议  是一种网络通讯的规则  常见协议:TCP,UDP UDP: 1

[学习笔记]Java网络编程之UDP通讯

1. 体系结构 计算机网络各层及其协议的集合,称为网络的体系结构.目前公认的计算机网络体系结构有概念清楚理论完善的OSI七层协议结构和实际上广泛应用的TCP/IP四层体系结构. 2. 各层概述 应用层:直接为用户的程序提供服务,如支持万维网应用的HTTP协议,支持电子邮件的SMTP协议等. 运输层:负责向两个主机中进程之间的通信提供服务,主要使用面向连接的TCP协议和无连接的UDP协议. 网络层:负责为分组交换网上不同主机提供地址交付的通信服务,该层使用IP协议,所以在该层传送的数据称之为IP数

黑马程序员-Java 网络编程

--Java培训.Android培训.iOS培训..Net培训.期待与您交流!-- 一.概要 学习网络编程需要向对网络模型有一定的了解,主要需要了解的网络模型有OSI参考模型和TCP/IP参考模型,现在TCP/IP模型应用最为广泛,网络编程一般都是针对TCP/IP协议参考模型的编程.但是作为学习时,OSI的学习也是必不可少的,OSI分为七层协议,分别是:物理层.数据链路层.网络层.传输层.会话层.表示层和应用层.TCP/IP模型只有四层,分别是:网络访问层.互联网层.传输层和应用层.接下来要学习

Java网络编程之UDP程序设计

1.UDP简介 使用UDP发送消息,对方不一定收到,因为所有的信息使用数据报的形式发送出去,这就要求客户端要始终等待接收服务器发送过来的信息,在Java中使用DatagramSocket类和DatagramPacket类完成UDP程序的开发. 2.程序实现 使用DatagramPacket类包装一条要发送的信息,之后使用DatagramSocket类用于完成信息的发送操作.DatagramPacket类的常用方法: 类型 方法 描述 构造 DatagramPacket(byte[] buf, i

Java网络编程之UDP网络编程

一.UDP网络通信 1.类DatagramSocket和DatagramPacket实现了基于UDP协议网络程序.2.UDP数据报通过数据报套接字DatagramSocket发送和接收,系统不保证UDP数据报一定能够安全送到目的地,也不能确定什么时候可以抵达.3.DatagramPacket对象封装了UDP数据报,在数据报中包含了发送端的IP地址和端口号以及接收端的IP地址和端口号.4.UDP协议中每个数据报都给出了完整的地址信息,因此无须建立发送方和接收方的连接.如同发快递包裹一样. 二.Da