网络编程回顾

原创 2012年03月26日 16:26:02

 

-----------------------android培训java培训java学习型技术博客、期待与您交流!----------------------

 

    Java中的网络编程更加简洁,他提供了各种Socket类程序员只需要了解这些类的构造和相关方法,即可轻松编写网络程序,正式因为这样Java才紧紧抓住Web的大潮,从而推动网络的大发展。而无论任何网络程序都是运行在一定的协议体系中的,所以了解这些网络协议,对我们理解各种Socket类,进而编写网络程序起到事半功倍的效果。

    网络遵循两种协议,1,TCP/IP协议,该协议是网络的核心协议,其中TCP协议运行在客户端,他的任务是在网络上的两个机器之间实现端到端,可靠的数据传输功能,IP运行在网络的核心设备路由器上,负责将数据分组从源端发送到目的端,该协议的特点是:面向连接,可靠,传输速度较慢;2,UDP是面向无连接的,数据以封装为报文的方式发送,字节开销小,且不需要建立链接,吞吐量主要受应用软件,传输宽带及主机性能的影响,传输速度快,但不太安全,容易造成数据丢失;两种协议都处在传输层。

    网络编程实际上就是Socket编程,Socket套接字在客户,服务器通信魔心中扮演十分重要的角色,它如同无武器与客户端之间的代理,完成双方应用程序发送和接受数据的任务,客户建立和服务器的链接创建一个Socket,服务器一旦接受客户的链接请求也返回一个Socket,之后这两个Socket就可以互相收发数据了;

以下是向服务端发送一个小文件的示例TCP/IP程序;

class TextClient{

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

       Socket s=newSocket("192.168.1.155",13000);//创建Socket对象,指定接受方IP地址及端口号;

       BufferedReader bfr=newBufferedReader(

           new FileReader("IPDemo.java"));

       PrintWriter out=newPrintWriter(s.getOutputStream(),true);

       String line;

       while((line=bfr.readLine())!=null){

           out.println(line);

       }

       s.shutdownOutput();

       System.out.println("HelloWorld!");

       BufferedReader bfIn=new BufferedReader(

           newInputStreamReader(s.getInputStream()));

       System.out.println(bfIn.readLine());

       bfr.close();

       s.close();//关闭链接;

    }

}

class TextServer {

    public static voidmain(String[] args) throws Exception{

       ServerSocket ss=newServerSocket(13000);//创建服务端ServerSocket,负责监听一个端口号,接收服务端请求,

       Socket s=ss.accept();接受客户端数据,返回一个Socket

       BufferedReader bfIn=newBufferedReader(

           newInputStreamReader(s.getInputStream()));

       PrintWriter pw=newPrintWriter(

           newFileWriter("server.java"),true);

       String line;

       System.out.println("HelloWorld!");

       while((line=bfIn.readLine())!=null){

           pw.println(line);

       }

       System.out.println("HelloWorld!");

       PrintWriter out=newPrintWriter(s.getOutputStream(),true);

       out.println("上传成功");

       pw.close();

       s.close();关闭与客户端的链接

       ss.close();//关闭服务端口

    }

}

以下是通过UDP方式传输数据的小程序

class UdpSend  {

    public static voidmain(String[] args) throws Exception{

       DatagramSocket ds=newDatagramSocket();//创建一个DatagramSocket,用于发送数据包      

            BufferedReader bfr=newBufferedReader(

           newInputStreamReader(System.in));

       String line;

       while((line=bfr.readLine())!=null){

           byte[] buf=line.getBytes();

/*创建一个数据包,用于存储将要发送的数据的数据,并指定对方的IP地址及其监听的端口*/

                DatagramPacketdp=new DatagramPacket(buf,buf.length,

               InetAddress.getByName("192.168.1.155"),10000);

            ds.send(dp);//将数据发送出去

           if("886".equals(line))

              break;

       }

        ds.close();

    }

}

class UdpRece

{

    public static voidmain(String[] args)throws Exception

    {

        DatagramSocket ds=newDatagramSocket(10000);//创建一个DatagramSocket 监听端口

       while(true)

       {

           byte[] buf=new byte[1024];

           DatagramPacket dp=

               new DatagramPacket(buf,buf.length);//创建固定长度的数据包

           ds.receive(dp);//接收到客户端的数据,接下来读取数据

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

           String data=

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

           int port=dp.getPort();

          System.out.println(ip+"::"+data+"::"+port);

           if("886".equals(data))

              break;

       }

        ds.close();

    }

}

  TCP广泛应用于访问各网站的服务器程序中,UDP则主要应用于聊天程序的编写,但在登陆时也会用到TCP协议。

-----------------------android培训java培训java学习型技术博客、期待与您交流!----------------------

详情请查看:http://edu.csdn.net/heima

 

敏捷开发-回顾会议

保持透明性、检视与调整是Scrum的三大支柱, 以此作为支撑我们才可以对整个开发过程进行持续的改善。回顾会议是Scrum检视与调整的一个重要的环节,在这个会议上,ScrumMaster鼓励团队在Sc...
  • kic18
  • kic18
  • 2017年06月22日 14:52
  • 717

Sprint回顾会议的一种简单玩法

sprint回顾会议的一种简单开法——只须问团队成员3个问题:他们想开始做什么?他们想停止做什么?他们想继续做什么?...
  • happydeer
  • happydeer
  • 2016年02月28日 16:43
  • 3105

回顾2016,工作总结!

在2016年里,还记得最初自己的工作态度并不是非常的好,随着工作时间的累积,我的态度随之转变起来,变得注重团队和有责任心,我觉得这个是我自己在2016里最大的转变,对比于技术上的提升,我觉得态度和责任...
  • JACKO_CHAN
  • JACKO_CHAN
  • 2017年01月02日 12:53
  • 379

敏捷其实很简单(15) 回顾会议

其实个人以为,回顾会议在scrum所有的events中是最重要的一个 正如上图所示,我们可以看到在整个scrum的价值流上,每个会议都有不同的对应意义:planning meeting用来将目标分解...
  • superkunkun
  • superkunkun
  • 2017年01月09日 21:33
  • 1004

一年工作回顾及总结

看到别人的工作总结,不错,分享下。 一年回顾: 去年7月4号入职到现在已经有一年零2个月了,一直想写下一年工作回顾及总结,但是每次打开文档时总是以各种理由推后,一来是想写的太多但是又不...
  • zhengzhe1937
  • zhengzhe1937
  • 2012年10月15日 17:30
  • 2058

如何开好迭代回顾会议(2)准备、工具

上篇文章向大家介绍了一个通用的迭代回顾会议议程,它可以应对大部分情况下的迭代回顾会议。相信只要做好以上的每一个环节,一定可以开好一个迭代回顾会议。怎样才能做好以上所有环节呢?会前准备必不可少,会前准备...
  • elifool_83
  • elifool_83
  • 2013年10月08日 17:11
  • 2191

1分钟教你做项目阶段回顾

度量系列(3)——1分钟教你做项目阶段回顾 ​前言 当一个开发阶段结束,要如何来做回顾?今天我们就来讲讲做法和重点。 一张图教你回顾的5个步骤 左面:在开发中做一些实验、改进,交付后,再到右面进...
  • u011250455
  • u011250455
  • 2017年04月01日 17:22
  • 338

Scrum之 回顾会议

Scrum中Sprint计划会议是最重要的事件,第二重要的事件就是回顾会议,因为这是团队做改进的最佳时机。如果没有回顾,就会发现团队在重犯相同的错误。在sprint的评审会议后,团队需要进行一次回顾会...
  • SUKHOI27SMK
  • SUKHOI27SMK
  • 2015年03月10日 09:55
  • 1343

敏捷回顾会:经验教训的总结

敏捷回顾会:经验教训的总结 原文:Agile Retrospectives: Lessons Learned 在一个sprint中哪些方面做得好,哪些方面做得不好,哪些方面需要提高?在每一个敏...
  • maifansnet
  • maifansnet
  • 2017年11月02日 21:02
  • 297

项目回顾案例

某公司从2015年6月下旬开始启动了一个敏捷开发的项目,截止到8月中旬结束,投入的开发人员、测试人员、管理人员达到60多人,2015年8月31日,由咨询顾问作为主持人带领该团队的10多名核心人员,对整...
  • dylanren
  • dylanren
  • 2015年09月09日 11:10
  • 3455
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:网络编程回顾
举报原因:
原因补充:

(最多只允许输入30个字)