Java-网络编程

1  两种基本软件结构

(1)C/S:指客户端和服务端结构,用户需要安装客户端软件和服务端进行数据交互。

                  1)优点:可以充分利用用户的计算机资源,和服务端数据传输少;大型游戏,QQ,迅雷使用该种结构。

                  2)缺点:开发和维护成本高,需要开发和维护两个软件;

(2)B/S:指浏览器和服务端结构,用户直接使用浏览器通过网址访问

                 1)优点:只需要开发服务端软件,开发和维护成本低;

                 2)缺点:浏览器的数据处理性能较低,主要用来接收服务端传输数据,数据传输量较大;

 

2 网络通信协议

(1)网络通信协议是为了能够协调好网络中大量设备进行数据通讯的一种规则,互联网最基本,最广泛的协议是TCP/IP,它是一系列保证网络通信的协议的总称;

(2)TCP/IP协议

        1)四层网络模型

               四层模型包含应用层传输层网络层数据链路以及物理层,对于java开发,接触到的一般是传输层和应用层,传输层是将底层的数据封装为IO流,使用API中提供的Socket类来获取流;应用层主要是获取传输层中数据流的内容,并对内容以一定的协议进行解析,获取需要的内容,例如http协议可以将浏览器发送过来的请求信息进行解析,得到请求的资源路径,浏览器相关信息等。

                               

            2)TCP和UDP协议

                 TCP和UDP是TCP/IP四层模型中的传输层的两种协议,有各自的特点和应用场景

                 1)TCP:是一种较可靠的传输协议,传输数据前进行三次握手,断开数据进行四次挥手,传输过程数据大小无限制,应用在网页浏览,邮件,文件下载等;

                 2)UDP:是一种面向无连接的传输协议,传输数据前不需要建立连接,直接将数据发送,若对方无法接收则丢失数据,所以数据传输不可靠,但是由于省去了连接前的繁琐操作,传输速度较快;传输的每个数据包大小限制在64KB,应用在视频通讯,QQ聊天等。

                 3)TCP的三次握手

                      1)第一次:客户端向服务端发送连接请求,确保客户端发送正常,服务端接收正常;

                      2)第二次:服务端回复确认信息,确保客户端接收正常,服务端发送正常;

                      3)第三次:客户端再次发送链接确认信息,确认连接;

                       

                 4)TCP的四次挥手

                       1)客户端数据传输结束,向服务端发送接收请求;

                       2)服务端回复结束信息;

                       3)客户端断开连接;

                       4)服务端断开连接。

3 网络编程三要素

      1)协议:协议是用来保证互联网设备之间的数据传输;

      2)IP地址:用来给网络中的每台设备进行唯一编号,保证可以通过IP地址找到对应的设备,分为IPV4和IPV6两种

                1)IPV4:32位二进制组成,每8为一组,表示成 a.b.c.d 的形式,例如 192.168.65.100,可以表示42亿个地址;

                2)IPV6:128位二进制组成,每16位为一组,分为8组16进制表示,例如ABCD:EF01:2345:6789:ABCD:EF01:2345:6789;

      3)端口号:端口号是计算机设备中每个进程的编号,可以保证数据传输到指定计算机设备的指定进程;计算机之间的通信本质是软件和软件之间的数据交互,软件在计算机中运行的体现就是进程。

            端口号由2字节表示,可以表示0-65535端口号,0-1023是一些知名的网络服务和应用占用,普通的应用程序需要使用1023以上端口号,如果要使用的端口号被占用,则进程启动失败

 

4 TCP网络通信

     TCP网络通信需要严格区分客户端和服务端,java API中为TCP通信提供了两个类,客户端使用的Socket类和服务端使用的ServerSocket类

(1)Socket 类:该类实现客户端套接字,套接字指的是两台设备之间通讯的端点。
         1)构造方法:Socket(String host,int port):指定主机IP地址和端口号,如果host为null,则回传地址(127.x.x.x)

              Socket client = new Socket("127.0.0.1", 6666);

         2)常用方法:

              1)public InputStream getInputStream() : 返回此套接字的输入流。
                   如果此Scoket具有相关联的通道,则生成的InputStream 的所有操作也关联该通道。
                   关闭生成的InputStream也将关闭相关的Socket。
              2)public OutputStream getOutputStream() : 返回此套接字的输出流。
                   如果此Scoket具有相关联的通道,则生成的OutputStream 的所有操作也关联该通道。
                   关闭生成的OutputStream也将关闭相关的Socket。
              3)public void close() :关闭此套接字。
                    一旦一个socket被关闭,它不可再使用。
                    关闭此socket也将关闭相关的InputStream和OutputStream 。
              4)public void shutdownOutput() : 禁用此套接字的输出流。
                     任何先前写出的数据将被发送,随后终止输出流

           

(2)ServerSocket类:实现类服务端套接字,等待通过网络的请求

        1)构造方法

              ServerSocket(int port)创建一个服务端套接字,将其绑定到指定端口

                   ServerSocket server = new ServerSocket(6666);

        2)常用方法

              public Socket accept():侦听来自网络的连接请求,如果没有获取连接则阻塞,获取连接后返回一个Socket对象

5 创建一个简单的TCP网络程序
(1)客户端向服务端发送数据

         1)【服务端】启动,创建ServerSocket对象,等待连接。
         2)【客户端】启动,创建Socket对象,请求连接。
         3)【服务端】接收连接,调用accept方法,并返回一个Socket对象。
         4)  【客户端】Socket对象,获取OutputStream,向服务端写出数据。
         5)【服务端】Scoket对象,获取InputStream,读取客户端发送的数据
(2)服务端向客户端发送程序

        6)【服务端】Socket对象,获取OutputStream,向客户端回写数据。
        7)【客户端】Scoket对象,获取InputStream,解析回写数据。
        8)【客户端】释放资源,断开连接。

服务端程序

public class ServerTCP {
	public static void main(String[] args) throws IOException {
		System.out.println("服务端启动 , 等待连接 .... ");
		// 1.创建 ServerSocket对象,绑定端口,开始等待连接
		ServerSocket ss = new ServerSocket(6666);
		// 2.接收连接 accept 方法, 返回 socket 对象.
		Socket server = ss.accept();
		// 3.通过socket 获取输入流
		InputStream is = server.getInputStream();
		// 4.一次性读取数据
		// 4.1 创建字节数组
		byte[] b = new byte[1024];
		// 4.2 据读取到字节数组中.
		int len = is.read(b);
		// 4.3 解析数组,打印字符串信息
		String msg = new String(b, 0, len);
		System.out.println(msg);
		//5.关闭资源.
		is.close();
		server.close();
	}
}

客户端程序         

public class ClientTCP {
	public static void main(String[] args) throws Exception {
		System.out.println("客户端 发送数据");
		// 1.创建 Socket ( ip , port ) , 确定连接到哪里.
		Socket client = new Socket("localhost", 6666);
		// 2.获取流对象 . 输出流
		OutputStream os = client.getOutputStream();
		// 3.写出数据.
		os.write("你好么? tcp ,我来了".getBytes());
		// 4. 关闭资源 .
		os.close();
		client.close();
	}
}

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
深圳大学的Java程序设计课程中涉及到了网络编程应用。网络编程是指通过网络进行数据交互的程序设计方式。 在网络编程中,我们需要使用Java提供的一些类库和API来实现网络通信。Java中提供了一套完善的网络编程工具,包括Socket编程、ServerSocket编程、URL编程等。 Socket编程是实现网络通信的基本方式之一,它是一种面向连接的通信方式。通过创建一个Socket对象,程序可以与远程服务器进行连接,并进行数据的发送和接收。使用Socket编程,我们可以实现客户端和服务器之间的通信,实现从客户端向服务器发送请求,服务器处理请求并返回结果的功能。 ServerSocket编程是一种服务器端的网络编程方式,它可以接收客户端的连接请求并与之建立连接。通过创建一个ServerSocket对象,并调用其accept()方法,服务器可以等待客户端的连接请求,并将连接请求转交给一个新的Socket对象进行处理。使用ServerSocket编程,我们可以实现服务器的功能,接收来自多个客户端的请求,并处理这些请求。 URL编程是一种用于访问远程资源的网络编程方式。通过创建一个URL对象,并调用其openConnection()方法,我们可以建立与远程服务器的连接,并获取服务器返回的数据。使用URL编程,我们可以实现通过HTTP协议获取网页内容、下载文件等功能。 在深圳大学的Java程序设计课程中,我们将学习如何使用这些网络编程的工具和技术,并实践一些网络应用的开发。通过这门课程的学习,我们可以掌握网络编程的基本原理和常用技术,提升自己的Java程序设计能力。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值