Java网络编程

概述

        Java是通过使用流模式来实现网络信息交互的,一个接口同时拥有两个流:输入流输出流

        当一个进程向另一进程发送数据时,只需要将数据写入到相应接口的输出流上,而另一进程在接口的“另一端”从输入流上读取数据。

        Java所提供的网络功能按层次及使用方法分为三大类:

            URL:通过URL的网络资源表达形式确定数据在网络中的位置,利用URL对象中提供的相关方法,直接读入网络中的数据,或者将本地数据传送倒网络的另一端。

           Socket: Socket是指两个程序在网络上的通信连接,这个经常用到的一种方式。

           Datagram(数据报):Datagram方式是三种网络功能中最低级的一种,它是一种面向非连接的,以数据报方式工作的通信,使用在网络状况不可靠环境下的数据传输和访问。

               URL

                    程序Example

 

import  java.net.URL;
import  java.net.MalformedURLException;

public   class  UseURL
{
           
public static void main( String args[] )
           
{
                     URL url 
= null;
                     
try
                     
{
                                 url 
= new URL("http://www.163.com/fff/java.html");
                     }

                     
catch( MalformedURLExcetpion e )
                     
{
                                 System.out.println(
"MalformedURLException:" + e);
                      }

                      System.out.println(
"The URL is:");
                      System.out.println(url);
                      System.out.println(
"Use toString():" + url.toString());
                      System.out.println(
"Protocol is:" + url.getProtocol());
                      System.out.println(
"Host is:" + url.getHost());
                      System.out.println(
"Port is:" + url.getPort());
                      System.out.println(
"File is:" + url.getFile());
           }

}

              读入URL数据

                      URL类中定义了openStream()方法,用以读取URL位置的数据,其返回值是一个InputStream数据流。

 

import  java.net.URL;
import  java.net.MalformedURLException;
import  java.io. * ;

public   class  ReadFromURL
{
          
public static void main( String args[] )
          
{
                    URL root 
= null;
                    URL url 
= null;
                    String readString;
                    
try
                    
{
                              root 
= new URL("file:///e:/lxt008/javacode/");
                              url 
= new URL(root, "ReadFromURL.java");
                              BufferedReader br 
= new BufferedReader( new InputStreamReader(url.openStream()));
                              
while((readString = br.readLine()) != null)
                              
{
                                        System.out.println( readString );
                              }

                              System.out.println(
"*********** end of the file ****************");
                              br.close();
                    }

                    
catch( MalformedURLException e )
                    
{
                                System.out.println(
"MalformedURLException:" + e);
                    }

                    
catch(IOException e)
                    
{
                                 System.out.println(
"IOException:" + e);

                    }

          }

}

               Socket

                          Server端口与Client端建立连接的过程

                         先生成一个ServerSocket实例对象,随时监听Client端的连接请求,当Client端需要连接时,相应地要生成一个Socket实例对象,并发出连接请求,其中host参数指明该主机名,port#参数指明该主机端口号。Server端通过accept()方法接收倒Client端的请求后,开辟一个接口与之进行连接,并生成所需的I/O数据流。Client端和Server端的通信都是通过一对InputStream和OutputStream进行的。通信结束后,两端分别关闭对应的Socket接口。

                  Server端程序

import  java.net. * ;
import  java.io. * ;
public   class  SimpleServer
{
          
public static void main( String args[] )
          
{
                     s 
= new ServerSocket(5432);
                     System.out.println(
"Server started! Listener port 5432!!!");
          }

          
catch( IOException e )
          
{
                    e.printStackTrace();
          }

          
whiletrue )
          
{
                   
try
                   
{
                                Socket s1 
= s.accept();
                                System.out.println(
"Client connected!!!!");
                                OutputStream s1out 
= s1.getOutputStream();
                                BufferedOutputStream bw 
= new BufferedOutputStream(s1out);
                                ObjectOutputStream oos 
= new ObjectOutputStream(bw);
                                oos.writeObject(
"Hello Net World!  ");        //返回Client信息
                                oos.close();
                                bw.close();
                                s1.close();
                   }

                   
catch( IOException e )
                   
{
                              e.printStackTrace();
                   }

          }

}

                   Client端程序

 

import  java.net. * ;
import  java.io. * ;
public   class  SimpleClient
{
          
public static void main( String args[] )
          
{
                    
try
                    
{
                              Socket s1 
= new Socket("127.0.0.1"5432);
                              InputStream is 
= s1.getInputStream();
                                  BufferedInputStream bis = new BufferedInputStream(is);
                              ObjectInputStream ois 
= new ObjectInputStream( bis );
                              System.out.println( ois.readObject() );
                              ois.close();
                                  bis.close();
                                  is.close();
                              s1.close();
                    }

                    
catch( ConnectException connExc )
                    
{
                              System.out.println(
"Could not connect to the server.");
                    }

           }

}

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值