学习啦 > 学习电脑 > 网络知识 > 网络基础知识 > java网络编程基础相关知识

java网络编程基础相关知识

时间: 孙胜龙652 分享

java网络编程基础相关知识

  现在JAVA作为主流编程语言,如果想要学会java网络编程,需要掌握一定的基础,学习啦小编在这里给大家带来java网络编程基础的相关知识,希望能帮到大家。

  进行网络通信需要的三要素:ip、端口、协议

  IP: 连接在internet中每台主机地址的标识,32bit。

  //获取IP

  InetAddress i = InetAddreass.getLocalHost();

  InetAddress ia = InetAddreass.getByName("www.baidu.com");

  sop("address:"+ia.getHostAddreass());

  sop("name:"+ia.getHostName());

  端口:

  1、网络设备接口(集线器、交换机、路由器)----物理

  2、TCP/IP协议中的接口.----逻辑

  0~65535

  0~1024

  ..计算机运行程序的标识

  协议:

  UDP:

  将数据、源、目的封装成数据包,不需要建立连接

  每个数据包限制在64K内

  因无连接,是不可靠协议

  不需要建立连接,速度快

  TCP:

  建立连接,形成传输数据的通道

  在连接中进行大数据量传输

  通过三次握手完成连接,是可靠协议

  必须建立连接,是可靠协议

  InetAddress类:

  基本方法列举

  getAddress()返回此 InetAddress 对象的原始 IP 地址。

  getHostAddress()返回 IP 地址字符串(以文本表现形式)。

  getHostName()获取此 IP 地址的主机名。

  getAllByName(String host)在给定主机名的情况下,根据系统上配置的名称服务返回其 IP 地址所组成的数组。

  getByName(String host)在给定主机名的情况下确定主机的 IP 地址。

  getLocalHost()返回本地主机。

  isReachable(int timeout)测试是否可以达到该地址。

  DatagramPacket类

  需求:通过UDP传输协议将一段文字数据发送出去

  思路:

  1、建立udpSocket服务

  2、提供数据并将数据封装到数据包中

  3、通过Socket服务的发送功能将数据发送出去

  4、关闭资源

  面向Socket编程

  Socket就是为网络服务提供的一种机制,对应于网络中的传输层,通信的两端都有Socket,网络通信其实就是Socket间的通信,数据在两个Socket间通过IO传输。

  无论是UDP的面向连接还是TCP的面向连接,我们面向的其实都是Socket。

  Socket中的一些常用方法:

  bind(SocketAddress bindpoint)将套接字绑定到本地地址。

  connect(SocketAddress endpoint)&connect(SocketAddress endpoint, int timeout)将此套接字连接到服务器,且后者可以指定一个超时值。

  getInetAddress()&getPort() 返回套接字连接的远程地址及端口。

  getLocalAddress()&getLocalPort()获取套接字绑定的本地地址即端口。

  getInputStream()&getOutputStream()返回此套接字的输入输出流。

  shutdownInput()&shutdownOutput()禁用此套接字的输入流与输出流,即使同时调用了两方法也不能导致Socket关闭,另外shutdownOutput()方法通常用于告知服务端客户端发送结束。

  URL类:

  类URL代表一个统一资源定位符,它是指向互联网“资源”的指针。使用该类的openConnection()方法即可获取对应的URLConnection对象,也可以通过openStream()方法直接获取其所指向资源的输入流。

  它也提供了一系列的get方法来提取封装在URL对象中的信息

  URL中的基本方法:

  getFile()获取此 URL 的文件名。

  getHost()获取此 URL 的主机名(如果适用)。

  getPath()获取此 URL 的路径部分。

  getPort()获取此 URL 的端口号。

  getProtocol()获取此 URL 的协议名称。

  getQuery()获取此 URL 的查询部分。

  URLConnection它代表应用程序和 URL之间的通信链接。此类的实例可用于读取和写入此 URL 引用的资源。

  创建一个到URL的连接需要几个步骤:

  1、通过在 URL 上调用 openConnection 方法创建连接对象。

  2、处理设置参数和一般请求属性。

  3、使用 connect 方法建立到远程对象的实际连接。

  4、远程对象变为可用,远程对象的头字段和内容变为可访问。

  UDP实现发送和接收数据操作

  发送端代码实例:

  import java.io.*;

  import java.net.*;

  class UdpSend{

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

  DatagramSocket ds = new DatagramSocket();

  byte[] buf = "abcde".getByte();

  DatagramPacket dp = new DatagramPacket(buf, buf.length, InetAddreass.getByName(" 127.0.0.1 "), 10000);

  ds.send(dp);

  ds.close();

  }

  }

  接收端代码实例:

  import java.io.*;

  import java.net.*;

  class UdpReve{

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

  DatagramSocket ds = new DatagramSocket(10000);

  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.getDate(), 0, dp.getLength());

  int port = dp.getPort();

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

  ds.close();

  }

  }

  //使用while(true)使接收端持续开启

  练习:将本地图片上传到服务器,代码实现:

  客户端代码实现:

  public class PicClient {

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

  Socket s = new Socket("117.84.140.104", 10001);

  FileInputStream fis = new FileInputStream("C:\Users\Administrator\Desktop class="main">

学习啦 > 学习电脑 > 网络知识 > 网络基础知识 > java网络编程基础相关知识

java网络编程基础相关知识

时间: 孙胜龙652 分享

  OutputStream out = s.getOutputStream();

  byte[] buf = new byte[1024];

  int ch = 0;

  while((ch = fis.read(buf)) != -1){

  out.write(buf, 0, ch);

  }

  s.shutdownOutput();

  InputStream in = s.getInputStream();

  ch = in.read(buf);

  System.out.println(new String(buf, 0, ch));

  fis.close();

  s.close();

  }

  }

  服务器端代码实现:

  public class PicServer {

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

  ServerSocket ss = new ServerSocket(10001);

  Socket s = ss.accept();

  InputStream in = s.getInputStream();

  FileOutputStream fis = new FileOutputStream("C:\Users\Administrator\Desktop

java网络编程基础相关知识

  现在JAVA作为主流编程语言,如果想要学会java网络编程,需要掌握一定的基础,学习啦小编在这里给大家带来java网络编程基础的相关知识,希望能帮到大家。

  进行网络通信需要的三要素:ip、端口、协议

  IP: 连接在internet中每台主机地址的标识,32bit。

  //获取IP

  InetAddress i = InetAddreass.getLocalHost();

  InetAddress ia = InetAddreass.getByName("www.baidu.com");

  sop("address:"+ia.getHostAddreass());

  sop("name:"+ia.getHostName());

  端口:

  1、网络设备接口(集线器、交换机、路由器)----物理

  2、TCP/IP协议中的接口.----逻辑

  0~65535

  0~1024

  ..计算机运行程序的标识

  协议:

  UDP:

  将数据、源、目的封装成数据包,不需要建立连接

  每个数据包限制在64K内

  因无连接,是不可靠协议

  不需要建立连接,速度快

  TCP:

  建立连接,形成传输数据的通道

  在连接中进行大数据量传输

  通过三次握手完成连接,是可靠协议

  必须建立连接,是可靠协议

  InetAddress类:

  基本方法列举

  getAddress()返回此 InetAddress 对象的原始 IP 地址。

  getHostAddress()返回 IP 地址字符串(以文本表现形式)。

  getHostName()获取此 IP 地址的主机名。

  getAllByName(String host)在给定主机名的情况下,根据系统上配置的名称服务返回其 IP 地址所组成的数组。

  getByName(String host)在给定主机名的情况下确定主机的 IP 地址。

  getLocalHost()返回本地主机。

  isReachable(int timeout)测试是否可以达到该地址。

  DatagramPacket类

  需求:通过UDP传输协议将一段文字数据发送出去

  思路:

  1、建立udpSocket服务

  2、提供数据并将数据封装到数据包中

  3、通过Socket服务的发送功能将数据发送出去

  4、关闭资源

  面向Socket编程

  Socket就是为网络服务提供的一种机制,对应于网络中的传输层,通信的两端都有Socket,网络通信其实就是Socket间的通信,数据在两个Socket间通过IO传输。

  无论是UDP的面向连接还是TCP的面向连接,我们面向的其实都是Socket。

  Socket中的一些常用方法:

  bind(SocketAddress bindpoint)将套接字绑定到本地地址。

  connect(SocketAddress endpoint)&connect(SocketAddress endpoint, int timeout)将此套接字连接到服务器,且后者可以指定一个超时值。

  getInetAddress()&getPort() 返回套接字连接的远程地址及端口。

  getLocalAddress()&getLocalPort()获取套接字绑定的本地地址即端口。

  getInputStream()&getOutputStream()返回此套接字的输入输出流。

  shutdownInput()&shutdownOutput()禁用此套接字的输入流与输出流,即使同时调用了两方法也不能导致Socket关闭,另外shutdownOutput()方法通常用于告知服务端客户端发送结束。

  URL类:

  类URL代表一个统一资源定位符,它是指向互联网“资源”的指针。使用该类的openConnection()方法即可获取对应的URLConnection对象,也可以通过openStream()方法直接获取其所指向资源的输入流。

  它也提供了一系列的get方法来提取封装在URL对象中的信息

  URL中的基本方法:

  getFile()获取此 URL 的文件名。

  getHost()获取此 URL 的主机名(如果适用)。

  getPath()获取此 URL 的路径部分。

  getPort()获取此 URL 的端口号。

  getProtocol()获取此 URL 的协议名称。

  getQuery()获取此 URL 的查询部分。

  URLConnection它代表应用程序和 URL之间的通信链接。此类的实例可用于读取和写入此 URL 引用的资源。

  创建一个到URL的连接需要几个步骤:

  1、通过在 URL 上调用 openConnection 方法创建连接对象。

  2、处理设置参数和一般请求属性。

  3、使用 connect 方法建立到远程对象的实际连接。

  4、远程对象变为可用,远程对象的头字段和内容变为可访问。

  UDP实现发送和接收数据操作

  发送端代码实例:

  import java.io.*;

  import java.net.*;

  class UdpSend{

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

  DatagramSocket ds = new DatagramSocket();

  byte[] buf = "abcde".getByte();

  DatagramPacket dp = new DatagramPacket(buf, buf.length, InetAddreass.getByName(" 127.0.0.1 "), 10000);

  ds.send(dp);

  ds.close();

  }

  }

  接收端代码实例:

  import java.io.*;

  import java.net.*;

  class UdpReve{

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

  DatagramSocket ds = new DatagramSocket(10000);

  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.getDate(), 0, dp.getLength());

  int port = dp.getPort();

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

  ds.close();

  }

  }

  //使用while(true)使接收端持续开启

  练习:将本地图片上传到服务器,代码实现:

  客户端代码实现:

  public class PicClient {

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

  Socket s = new Socket("117.84.140.104", 10001);

  FileInputStream fis = new FileInputStream("C:\Users\Administrator\Desktop\1.jpg");

  OutputStream out = s.getOutputStream();

  byte[] buf = new byte[1024];

  int ch = 0;

  while((ch = fis.read(buf)) != -1){

  out.write(buf, 0, ch);

  }

  s.shutdownOutput();

  InputStream in = s.getInputStream();

  ch = in.read(buf);

  System.out.println(new String(buf, 0, ch));

  fis.close();

  s.close();

  }

  }

  服务器端代码实现:

  public class PicServer {

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

  ServerSocket ss = new ServerSocket(10001);

  Socket s = ss.accept();

  InputStream in = s.getInputStream();

  FileOutputStream fis = new FileOutputStream("C:\Users\Administrator\Desktop\2.jpg");

  byte[] buf = new byte[1024];

  int len = 0;

  while((len = in.read(buf)) != -1){

  fis.write(buf, 0, len);

  }

  OutputStream out = s.getOutputStream();

  out.write("上传完毕".getBytes());

  }

  }

.jpg");

  byte[] buf = new byte[1024];

  int len = 0;

  while((len = in.read(buf)) != -1){

  fis.write(buf, 0, len);

  }

  OutputStream out = s.getOutputStream();

  out.write("上传完毕".getBytes());

  }

  }

264890