网络编程回顾

 

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值