网络编程回顾

原创 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

 

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

Linux网络编程:基于TCP的程序开发回顾篇

在ChianLinux里看到了一篇关于Linux下的网络编程比较好的文章,记录下来http://blog.chinaunix.net/uid-23069658-id-3273673.html ...

Java基础知识回顾--网络编程基础

OSI参考模型 TCP/IP参考模型 应用层 表示层 应用层 会话层 传输层 传输层 网络层 ...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

Linux网络编程:基于UDP的程序开发回顾篇

基于无连接的UDP程序设计        同样,在开发基于UDP的应用程序时,其主要流程如下:        对于面向无连接的UDP应用程序在开发过程中服务端和客户端的操作流...

Linux网络编程:基于UDP的程序开发回顾篇

基于无连接的UDP程序设计        同样,在开发基于UDP的应用程序时,其主要流程如下:        对于面向无连接的UDP应用程序在开发过程中服务端和客户端的操作流...

UNIX网络编程学习回顾---字节序

本文档的Copyleft归rosetta所有,使用GPL发布,可以自由拷贝、转载,转载时请保持文档的完整性。 参考资料:UNPV13e 来源:http://blog.csdn.net/rosett...

Linux网络编程:基于TCP的程序开发回顾篇

面向连接的TCP程序设计        基于TCP的程序开发分为服务器端和客户端两部分,常见的核心步骤和流程:        其实按照上面这个流程调用系统API确实可以完全实现应用层程序的开发...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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