网络编程
相互连接的自主或者非自治计算机的集合称为网络。
自主代表独立的处理能力,而非自主代表依赖处理。
网络的目标:
- 可以实现最快,可靠的沟通。
- 通信成本较少。
- 可以在本地(集中式应用程序)或者全局(分布式应用程序)共享数据。
作为网络的一部分,我们编写了两种类型的程序。
它们是客户端编程和服务器端编程。
- 客户端编程始终提出从服务器端程序获取服务的请求。
- 服务器端编程是接收客户端请求的服务器,处理请求并给予客户端的响应。
要在客户端和服务器之间交换数据,我们必须具有协议。
协议是交换客户端和服务器程序之间数据的规则集。
当我们开发任何客户端和服务器应用程序时,我们必须遵循客户端和服务器端的某些步骤。
在客户端执行的步骤:
- 连接到服务器端程序。要连接到服务器,客户端程序必须传递服务器名称或者域名命名服务或者IP地址。
- 通过数据进行请求。
- 在服务器端执行一些操作之后,客户端侧程序必须接收来自服务器端的响应。
- 读取服务器发送的响应数据。
在服务器端执行的步骤:
- 每个服务器端程序必须在某些端口号运行(端口号是逻辑执行程序正在发生的逻辑数字ID)。
- 每个服务器都必须具有用于访问运行的服务或者程序的物理名称。服务器可以通过两种方式访问。在名称(默认情况下)名为DNS和IP地址(默认为127.0.0.1)。
- 每个服务器端程序必须接收客户端请求。
- 每个服务器端程序都必须读取请求数据(请求参数)。
- 处理数据或者请求。
- 将响应发送回客户端。
套接字:为了在客户端开发程序,我们必须使用类套接字。
Java网络编程示例
server.java:
import java.net.*; import java.io.*; class server { public static void main(String[] args) { try { int pno = Integer.parseInt(args[0]); ServerSocket ss = new ServerSocket(pno); System.out.println("SERVER IS READY"); while (true) { Socket s = ss.accept(); InputStream is = s.getInputStream(); DataInputStream dis = new DataInputStream(is); int n = dis.readInt(); System.out.println("VALUE OF CLIENT = " + n); int res = n * n; OutputStream os = s.getOutputStream(); DataOutputStream dos = new DataOutputStream(os); dos.writeInt(res); } } catch (Exception e) { System.out.println(e); } } };
client.java:
import java.io.*; import java.net.*; class client { public static void main(String[] args) { try { String sname = args[0]; int pno = Integer.parseInt(args[1]); Socket s = new Socket(sname, pno); System.out.println("CLIENT CONNECTED TO SERVER"); OutputStream os = s.getOutputStream(); DataOutputStream dos = new DataOutputStream(os); int n = Integer.parseInt(args[2]); dos.writeInt(n); InputStream is = s.getInputStream(); DataInputStream dis = new DataInputStream(is); int res = dis.readInt(); System.out.println("RESULT FROM SERVER = " + res); } catch (Exception e) { System.out.println(e); } } };
套接字API:
构造函数:
Socket (String hname, int Portno) throws UnknownHostException, IOException -1
实例方法:
public OutputStream getOutputStream (); - 2 public InputStream getInputStream (); - 3 public void close (); - 4
方法-1用于通过传递主机名和服务器侧程序的端口号与服务器套接字建立连接。
方法-2用于将数据写入服务器端程序。
方法-3用于接收或者读取服务器侧程序给出的响应。
方法-4用于关闭与服务器的套接字或者客户端通信。
Socket s=new Socket ("localhost", 7001);
serversocket:为了在服务器端开发程序,我们必须使用Class Serversocket。
serversocke API:
构造函数:
ServerSocket (int portno) throws IOException - 1
实例方法:
public Socket accept (); - 2 public void close (); - 3
方法-1用于使服务器侧程序以某些端口号运行。
方法-2用于接受套接字数据(客户端数据)。
方法-3用于关闭或者终止服务器端程序I.E.,Serversocket程序。
日期:2020-04-11 23:04:28 来源:oir作者:oir