22.Java语言软件架构(CS/BS )、网络通信三要素、TCP通信、Socket、ServerSocket套接字

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/ajia5216/article/details/82793407

软件架构CS/BS

1.桌面应用程序(C-Client/S-Server)

在本机安装,并可以独立启动的程序;

              1).单机版:运行时不需要网络。例如:计算器、Word、扫雷......

              2).网络版:运行时需要联网。例如:QQ、斗地主、网游......

2.WEB应用程序(B-Browser/S-Server)

程序只需要发布到互联网上的一台服务器上即可,客户端只需要“浏览器”,就可以通过网址访问我们的服务器。例如:京东、淘宝、百度.....

网络通信三要素

1.IP地址:它是计算机在互联网上的唯一地址;

        十进制表示:最小IP : 000.000.000.000

                               最大IP : 255.255.255.255

        二进制表示:最小IP : 00000000.00000000.00000000.00000000

                               最大IP : 11111111.11111111.11111111.11111111

        其中:

              1).192.168.xxx.xxx : 不在公网上使用,做内网IP。

              2).10.xxx.xxx.xxx   : 不在公网上使用。

              3).127.0.0.1 : (localhost)不在公网上使用。它是本机IP。

2.端口: 相当于“收信人”

              物理端口:网卡口;

              逻辑端口:由操作系统维护,就是一组数字,范围:0--65535

              任何程序在启动时都可以自行申请端口,如果这个端口没被占用,操作系统就可以分配给你的程序使用。

                     1).一个程序启动后可以同时占用多个端口;

                     2).一个端口在某个时间点上不能被多个程序同时占用;

3.协议:双方都能看得懂的语言;

http、ftp、TCP协议、UDP协议...

UDP协议:

       1).将数据打包发送;

       2).数据包的大小有限制(64K)

       3).发送时,可以没有接收端;

              例如:共屏软件、视频会议系统

       TCP协议:

       1).数据不需要打包发送;

       2).数据大小没有显示;

       3).发送时,必须要有接收端;

              例如:飞秋。即时聊天程序...

TCP通信

通信原理:

1. 服务端程序,需要事先启动,等待客户端的连接。

2. 客户端主动连接服务器端,连接成功才能通信。服务端不可以主动连接客户端。

在Java中,提供了两个类用于实现TCP通信程序:

1. 客户端: java.net.Socket 类表示。创建 Socket 对象向服务端发出连接请求,服务端响应请求,两者建立连接开始

通信。

2. 服务端: java.net.ServerSocket 类表示。创建 ServerSocket 对象,相当于开启一个服务,并等待客户端的连接。

Socket套接字、

构造方法:

public Socket(String host, int port) :创建套接字对象并将其连接到指定主机上的指定端口号。如果指定的host是null ,

则相当于指定地址为回送地址。

回送地址(127.x.x.x) 是本机回送地址(Loopback Address),主要用于网络软件测试以及本地机进程间通信,无论什么程序,一旦使用回送地址发送数据,立即返回,不进行任何网络传输。

成员方法

public InputStream getInputStream() : 返回此套接字的输入流。

如果此Scoket具有相关联的通道,则生成的InputStream 的所有操作也关联该通道。

关闭生成的InputStream也将关闭相关的Socket。

public OutputStream getOutputStream() : 返回此套接字的输出流。

如果此Scoket具有相关联的通道,则生成的OutputStream 的所有操作也关联该通道。关闭生成的OutputStream也将关闭

相关的Socket。

public void close() :关闭此套接字。一旦一个socket被关闭,它不可再使用。关闭此socket也将关闭相关的

InputStream和OutputStream 。

public void shutdownOutput() : 禁用此套接字的输出流。任何先前写出的数据将被发送,随后终止输出流。

 

ServerSocket

构造方法

public ServerSocket(int port) 使用该构造方法在创建ServerSocket对象时,就可以将其绑定到一个指定的端口号上,

参数port就是端口号。

成员方法

public Socket accept() 侦听并接受连接,返回一个新的Socket对象,用于和客户端实现通信。该方法会一直阻塞直到

建立连接。

通信实现

TCP发送端通信实现:

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

    Socket socket = new Socket("127.0.0.1",9999);
    OutputStream out = socket.getOutputStream();
    out.write("我发送了一个信息。".getBytes());
    System.out.println("客户端发送了一个信息");
    socket.close();
}

TCP接收端通信实现:

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

    ServerSocket serverSocket = new ServerSocket(9999);
    System.out.println("服务器等待连接.....");
    Socket socket = serverSocket.accept();
    System.out.println("客户端连接成功.....");
    InputStream in = socket.getInputStream();
    byte[] array = new byte[1024];
    int len = in.read(array);
    System.out.println("接收到的信息:" + new String(array,0,len));
    in.close();
    socket.close();
}

 

展开阅读全文

没有更多推荐了,返回首页