黑马程序员——Java网络编程之UDP传输
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了黑马程序员——Java网络编程之UDP传输,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含8700字,纯文字阅读大概需要13分钟。
内容图文
<SPAN
style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘>网络编程
<SPAN style=‘color: rgb(255, 0, 0); font-family: "comic sans ms", sans-serif; font-size: 15px;‘>网络模型
<SPAN
style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘>通讯要素:InetAddress(对象):ip地址,网络中设备的标识,不可记忆,可用主机名,本地回环地址:127.0.0.1主机名localhost
<SPAN style=‘color: rgb(255, 0, 0); font-family: "comic sans ms", sans-serif; font-size: 15px;‘>端口号
<SPAN
style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘>传输协议:UDP,将数据的源及目的封装成数据包中,不需要建立连接,每个数据包的大小限制在64K内,无连接,是不可靠协议,不需要建立连接,速度快。力求速度,不求数据的准确性。比如聊天软件,网络会议。
<SPAN
style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘>TCP:建立连接,形成传输数据的通道,在连接中进行大数据量传输,通过三次握手完成连接,是可靠协议,必须建立连接效率稍低。
<SPAN style=‘color: rgb(255, 0, 0); font-family: "comic sans ms", sans-serif; font-size: 15px;‘>Socket
<SPAN
style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘>Socket就是为网络服务提供的一种机制,通信的两端都要有Socket。网络间的通信其实就是Socket间的通信,网络通信就是两个Socket间通过I/O传输。
<SPAN
style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘>UDP传输:DatagramSocket和DatagramPacket根据包中的信息从一台机器投递到另一台机器。凡是带端口的都是用来构造发送数据包的。写Socket要理解流程。
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘>class Send implements Runnable{
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> //1.通过DatagramSocket,建立 Scoket端点
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘>private DatagramSocket s ;
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘>public Send( DatagramSocket
s){
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> this. s= s;
<SPAN style=‘color: rgb(124, 124, 124); font-family: "comic sans ms", sans-serif; font-size: 15px;‘>}
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> public void run() {
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> //获取控制台数据
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> BufferedReader
buffreader =new BufferedReader(new InputStreamReader(System.in)) ;
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> String
str ;
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> byte[] buff =new byte[ 1024];
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> try {
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> while((str =buffreader .readLine ())!= null){
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> if("886" .equals (str))
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> break;
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> buff =str .getBytes ();
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> //2.将数据通过DatagramPacket将数据封装成数据包,要包含数据,目标IP和目标端口
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> DatagramPacket
data=
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> new DatagramPacket( buff, buff.length,InetAddress.getByName("127.0.0.1") ,10071 );
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> //3.调用Socket的send方法,发送数据。
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> s. send(data );
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> s. close();
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> }
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> } catch (Exception e ) {
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> // TODO: handle exception
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> throw new RuntimeException("chulibuliao" );
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> }
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> }
<SPAN style=‘color: rgb(63, 63, 63); font-family: "comic sans ms", sans-serif; font-size: 15px;‘>
<SPAN style=‘color: rgb(124, 124, 124); font-family: "comic sans ms", sans-serif; font-size: 15px;‘>}
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘>class Rece implements Runnable{
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> //1.通过DatagramSocket建立Soket服务。接收端建立Socket服务的时候一般要监听一个端口。
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> private DatagramSocket s ;
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> public Rece( DatagramSocket
s){
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> this. s= s;
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> }
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> public void run() {
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> // TODO Auto-generated method stub
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> try {
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> while ( true){
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> //2.定义数据包,用来接受源传送过来的数据包
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> byte[] buff =new byte[ 1024];
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> DatagramPacket
dp=new DatagramPacket(buff, buff.length) ;
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> //3.接收源的数据包,装入预先定义好的数据包
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> s. receive(dp );
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> //4.将不同的数据和信息分别取出
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> String
ip=dp.getAddress() .getHostAddress ();
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> String
data=new String(dp.getData() ,0 ,dp .getLength ());
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> System .out.println( ip+ ">>>"+data );
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> s. close();
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> }
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> } catch (Exception e ) {
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> // TODO: handle exception
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> throw new RuntimeException("shicu" );
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> }
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> }
<SPAN style=‘color: rgb(124, 124, 124); font-family: "comic sans ms", sans-serif; font-size: 15px;‘>}
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘>public class WeChat {
<SPAN style=‘color: rgb(1, 1, 1); font-family: "comic sans ms", sans-serif; font-size: 15px;‘>
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> public static void main (String[] args) throws Exception {
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> // TODO Auto-generated method stub
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘>DatagramSocket sendSocket=new DatagramSocket();
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘>DatagramSocket receSocket=new DatagramSocket(10071 ); //接收端需要监听窗口
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘>new Thread( new Send( sendSocket)).start() ;
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘>new Thread( new Rece( receSocket)).start() ;
<SPAN style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘> }
<SPAN style=‘color: rgb(1, 1, 1); font-family: "comic sans ms", sans-serif; font-size: 15px;‘>
<SPAN style=‘color: rgb(124, 124, 124); font-family: "comic sans ms", sans-serif; font-size: 15px;‘>}
<SPAN
style=‘font-family: "comic sans ms", sans-serif; font-size: 15px;‘>
原文:http://www.cnblogs.com/shuawang/p/3731337.html
内容总结
以上是互联网集市为您收集整理的黑马程序员——Java网络编程之UDP传输全部内容,希望文章能够帮你解决黑马程序员——Java网络编程之UDP传输所遇到的程序开发问题。
如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
来源:【匿名】