JAVA网络编程案例教程,java是一个网络编程语言,简单易学

  JAVA网络编程案例教程,java是一个网络编程语言,简单易学

  Yyds干货库存

  一、基本概述(一)基本介绍JAVA是互联网上的一种语言。它在语言层面上提供了对网络应用的支持,使得开发通用应用变得容易。同时Java还提供了网络类库,可以方便网络连接。

  (二)计算机网络计算机网络是分布在各地(=2)的具有自主功能的计算机(完全自处理设备)的集合。

  网络编程(目的):

  或者通过网络协议直接或间接地与其他计算机交换数据。

  核心问题(1)如何准确定位网络上的一台或多台主机以及主机上的具体应用?

  (2)如何高效传输数据?

  网络元件(1)的IP地址用于识别计算机网络中的主机。

  本地环回地址(hostAdderss): 127.0.0.1

  主机名):本地主机

  IP分类

  IPV4:四个字节,可以代表大约42亿个不同的主机(点分十进制)

  IPV6:十六个字节,写成八个无符号整数,每个用四个十六进制位表示,

  用“:”分隔。

  (2)端口号每台计算机中有许多进程。为了便于两台计算机中的进程之间的通信,引入了端口号来表示计算机中运行的进程。

  解释

  不同的进程有不同的端口号。

  端口号用16位二进制整数表示(范围从0到65535)。

  端口号和IP地址组合可以给出一个网络套接字:Socket。

  (3)主机表达方式1: IP地址(hostAddress)

  方法2:域名(主机名)

  因为IP地址难以记忆和管理,所以引入了“域名”。连接网络后,输入主机域名,域名服务器(DNS)会将域名解析为

  IP地址,以便您可以与主机建立连接。

  (4)网络通信协议

  传输层的两个重要协议是:

  Tcp(传输控制协议):传输控制协议。

  UDP(用户数据报协议):用户数据块协议。

  介绍如下:

  套接字:代表唯一标识的IP地址和端口号的组合。

  网络中两台主机通信时,通信两端都需要套接字,网络通信本质上就是套接字通信。

  Socket允许程序将网络连接视为一个流,数据通过IO在两个Socket之间传输。

  发起通信服务的一方是客户端,等待通信请求的一方是服务端。

  分类:

  Socket:使用TCP提供可靠的字节流服务。

  数据报套接字:使用UDP提供“尽力而为”的数据报服务。

  有关详细信息,请参考:计算机网络概述

  二。实际应用(一)实例化@测试

  公共无效测试(){

  InetAddress inet1=null

  InetAddress inet2=null

  InetAddress inet3=null

  尝试{

  //实例化(模式一)

  inet 1=inet address . get byname( 127 . 0 . 0 . 1 );

  inet 2=inet address . get byname( www . Baidu . com );

  //实例化(模式2)

  inet 3=inet address . getlocalhost();

  } catch (UnknownHostException e) {

  e . printstacktrace();

  }最后{

  system . out . println(inet 1);

  system . out . println(inet 2);

  system . out . println(inet 2 . get hostname());

  system . out . println(inet 2 . gethostaddress());

  system . out . println(inet 3);

  }

  }描述:

  方法一:getByName(主机地址)

  方法二:getLocalHost()

  基于TCP协议的信息交换

  例1:客户端将内容发送到数据终端,服务器将内容打印到控制台。

  @测试

  公共void客户端(){

  Socket socket=null

  OutputStream os=null

  尝试{

  inet address inet=inet address . get byname( 127 . 0 . 0 . 1 );

  socket=新插座(inet,8899);

  OS=socket . get output stream();

  Os.write(你好,北京!。getBytes());

  } catch (IOException e) {

  e . printstacktrace();

  }最后{

  如果(os!=null) {

  尝试{

  OS . close();

  } catch (IOException e) {

  e . printstacktrace();

  }

  }

  如果(插座!=null) {

  尝试{

  socket . close();

  } catch (IOException e) {

  e . printstacktrace();

  }

  }

  }

  }

  @测试

  Public void server(){//服务器端

  ServerSocket serverSocket=null

  Socket socket=null

  输入流为=空

  ByteArrayOutputStream baos=null;

  尝试{

  服务器套接字=新服务器套接字(8899);

  套接字=服务器套接字。接受();

  is=套接字。getinputstream();

  baos=new ByteArrayOutputStream();

  字节[]缓冲区=新字节[5];

  int len

  while((len=is.read(buffer))!=-1){

  baos.write(buffer,0,len);

  }

  系统。出去。println(baos。tostring());

  } catch (IOException e) {

  e。printstacktrace();

  }最后{

  如果(baos!=null) {

  尝试{

  鲍斯。close();

  } catch (IOException e) {

  e。printstacktrace();

  }

  }

  如果(是!=null) {

  尝试{

  是。close();

  } catch (IOException e) {

  e。printstacktrace();

  }

  }

  如果(插座!=null) {

  尝试{

  插座。close();

  } catch (IOException e) {

  e。printstacktrace();

  }

  }

  if(serverSocket!=null) {

  尝试{

  服务器套接字。close();

  } catch (IOException e) {

  e。printstacktrace();

  }

  }

  }

  }说明:

  首先,通过服务器()开通服务,进入监听状态

  而后,开启客户,开始向计算机网络服务器端发送消息

  例题二:客户端发送文件给服务器,服务端将文件保存到本地

  @测试

  公共空的客户端(){

  输出流操作系统=空

  FileInputStream fis=null

  尝试{

  //创建一个窝

  Socket Socket=新套接字(inet地址。get byname( 127。0 .0 .1 ),9090);

  //获取一个输出流

  OS=套接字。获取输出流();

  //获取一个输入流

  fis=新文件输入流(新文件(美男子. png ));

  //写入数据

  字节[]缓冲区=新字节[1024];

  int len

  while((len=fis.read(buffer))!=-1){

  os.write(buffer,0,len);

  }

  } catch (IOException e) {

  e。printstacktrace();

  }最后{

  //关闭流

  如果(fis!=null) {

  尝试{

  fis。close();

  } catch (IOException e) {

  e。printstacktrace();

  }

  }

  如果(os!=null) {

  尝试{

  OS。close();

  } catch (IOException e) {

  e。printstacktrace();

  }

  }

  }

  }

  @测试

  公共空的服务器(){

  ServerSocket ss=null

  Socket socket=null

  输入流为=空

  FileOutputStream fos=null

  尝试{

  //创建一个服务器

  ss=新服务器套接字(9090);

  //获取一个客户端的一个窝

  插座=ss。接受();

  //创建一个输入流

  is=套接字。getinputstream();

  //创建一个本地文件用来存储传递的内容

  fos=新文件输出流(新文件(‘美。png’));

  //将计算机网络服务器传送来的数据保存到文件中

  字节[]缓冲区=新字节[1024];

  int len

  while((len=is.read(buffer))!=-1){

  fos.write(buffer,0,len);

  }

  } catch (IOException e) {

  e。printstacktrace();

  }最后{

  如果(fos!=null) {

  尝试{

  福斯。close();

  } catch (IOException e) {

  e。printstacktrace();

  }

  }

  如果(是!=null) {

  尝试{

  是。close();

  } catch (IOException e) {

  e。printstacktrace();

  }

  }

  如果(插座!=null) {

  尝试{

  插座。close();

  } catch (IOException e) {

  e。printstacktrace();

  }

  }

  如果(ss!=null) {

  尝试{

  党卫军。close();

  } catch (IOException e) {

  e。printstacktrace();

  }

  }

  }

  }

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: