1.2 网络编程技术

前面介绍了网络编程的相关基础知识,初步建立了网络编程的概念,但是实际学习网络编程还必须使用某种程序设计语言进行代码实现,下面就介绍一下网络编程的代码实现。

1.2.1 网络编程步骤

按照前面的基础知识介绍,无论使用TCP方式还是UDP方式进行网络通讯,网络编程都是由客户端和服务器端组成。当然,B/S结构的编程中只需要实现服务器端即可。所以,下面介绍网络编程的步骤时,均以C/S结构为基础进行介绍。

说明:这里的步骤实现和语言无关,也就是说,这个步骤适用于各种语言实现,不局限于Java语言。

1.2.1.1 客户端网络编程步骤

客户端(Client)是指网络编程中首先发起连接的程序,客户端一般实现程序界面和基本逻辑实现,在进行实际的客户端编程时,无论客户端复杂还是简单,以及客户端实现的方式,客户端的编程主要由三个步骤实现:

1、 建立网络连接

客户端网络编程的第一步都是建立网络连接。在建立网络连接时需要指定连接到的服务器的IP地址和端口号,建立完成以后,会形成一条虚拟的连接,后续的操作就可以通过该连接实现数据交换了。

2、 交换数据

连接建立以后,就可以通过这个连接交换数据了。交换数据严格按照请求响应模型进行,由客户端发送一个请求数据到服务器,服务器反馈一个响应数据给客户端,如果客户端不发送请求则服务器端就不响应。

根据逻辑需要,可以多次交换数据,但是还是必须遵循请求响应模型。

3、 关闭网络连接

在数据交换完成以后,关闭网络连接,释放程序占用的端口、内存等系统资源,结束网络编程。

最基本的步骤一般都是这三个步骤,在实际实现时,步骤2会出现重复,在进行代码组织时,由于网络编程是比较耗时的操作,所以一般开启专门的现场进行网络通讯。

1.2.1.2 服务器端网络编程步骤

服务器端(Server)是指在网络编程中被动等待连接的程序,服务器端一般实现程序的核心逻辑以及数据存储等核心功能。服务器端的编程步骤和客户端不同,是由四个步骤实现,依次是:

1、 监听端口

服务器端属于被动等待连接,所以服务器端启动以后,不需要发起连接,而只需要监听本地计算机的某个固定端口即可。

这个端口就是服务器端开放给客户端的端口,服务器端程序运行的本地计算机的IP地址就是服务器端程序的IP地址。

2、 获得连接

当客户端连接到服务器端时,服务器端就可以获得一个连接,这个连接包含客户端的信息,例如客户端IP地址等等,服务器端和客户端也通过该连接进行数据交换。

一般在服务器端编程中,当获得连接时,需要开启专门的线程处理该连接,每个连接都由独立的线程实现。

3、 交换数据

服务器端通过获得的连接进行数据交换。服务器端的数据交换步骤是首先接收客户端发送过来的数据,然后进行逻辑处理,再把处理以后的结果数据发送给客户端。简单来说,就是先接收再发送,这个和客户端的数据交换数序不同。

其实,服务器端获得的连接和客户端连接是一样的,只是数据交换的步骤不同。

当然,服务器端的数据交换也是可以多次进行的。

在数据交换完成以后,关闭和客户端的连接。

4、 关闭连接

当服务器程序关闭时,需要关闭服务器端,通过关闭服务器端使得服务器监听的端口以及占用的内存可以释放出来,实现了连接的关闭。

其实服务器端编程的模型和呼叫中心的实现是类似的,例如移动的客服电话10086就是典型的呼叫中心,当一个用户拨打10086时,转接给一个专门的客服人员,由该客服实现和该用户的问题解决,当另外一个用户拨打10086时,则转接给另一个客服,实现问题解决,依次类推。

在服务器端编程时,10086这个电话号码就类似于服务器端的端口号码,每个用户就相当于一个客户端程序,每个客服人员就相当于服务器端启动的专门和客户端连接的线程,每个线程都是独立进行交互的。

这就是服务器端编程的模型,只是TCP方式是需要建立连接的,对于服务器端的压力比较大,而UDP是不需要建立连接的,对于服务器端的压力比较小罢了。

1.2.1.3 小结

总之,无论使用任何语言,任何方式进行基础的网络编程,都必须遵循固定的步骤进行操作,在熟悉了这些步骤以后,可以根据需要进行逻辑上的处理,但是还是必须遵循固定的步骤进行。

其实,基础的网络编程本身不难,也不需要很多的基础网络知识,只是由于编程的基础功能都已经由API实现,而且需要按照固定的步骤进行,所以在入门时有一定的门槛,希望下面的内容能够将你快速的带入网络编程技术的大门。

Java网络编程入门(二)之客户端与服务器端编程步骤详解相关推荐

  1. 65.深度解密网络项目三:抖音起名项目整体步骤详解

    网络营销推广技术.技巧深度解密(网络项目三)指南: 1.本文档适合零基础以及互联网营销推广工作者,主要讲解关于抖音起名项目的问题. 2.原创版权文档,任何抄袭或者全部.部分模仿都是侵权行为. 3.敬畏 ...

  2. 库卡机器人是s7编程_KUKA工业机器人与S7-1200PLC实现Profinet通讯步骤详解图文版

    原标题:KUKA工业机器人与S7-1200PLC实现Profinet通讯步骤详解图文版 本次内容来简单谈一谈KUKA工业机器人与S7-1200PLC实现Profinet通讯的步骤. 步骤1:完成硬件接 ...

  3. 网络知识总结二:物理层和链路层协议详解

    将物理层和链路层放在一起讲,是因为物理层和链路层关系非常紧密,尤其是涉及到CSMA/CA和CSMA/CD协议.当然,链路层的功能要复杂的多,还包含很多其他协议,比如PPP协议,VLAN协议等. 1.物 ...

  4. JAVA动态读取xml_Java动态生成和解析xml文件步骤详解

    packageday12;importjava.io.FileInputStream;importjava.util.ArrayList;importjava.util.List;importorg. ...

  5. java游戏开发入门(二) - 菜单

    java游戏开发入门(二) - 菜单 前言 编码 主菜单 游戏内菜单(按下ESC后出现,并会暂停游戏) 效果展示 主菜单 游戏内菜单 完整代码 完整项目 前言   上一章我们创建了一个600x600的 ...

  6. Hadoop入门(四)——模板虚拟机环境准备(图文详解步骤2021)

    Hadoop入门(四)--模板虚拟机环境准备(图文详解步骤2021) 系列文章传送门 这个系列文章传送门: Hadoop入门(一)--CentOS7下载+VM上安装(手动分区)图文步骤详解(2021) ...

  7. Thrift实现C#调用Java开发步骤详解

    概述 Thrift实现C#调用Java开发步骤详解 详细 代码下载:http://www.demodashi.com/demo/10946.html Apache Thrift 是 Facebook ...

  8. 【入门】广电行业DNS、DHCP解决方案详解(三)——DNS部署架构及案例

    [入门]广电行业DNS.DHCP解决方案详解(三)--DNS部署架构及案例 DNS系统部署架构 宽带业务DNS架构 互动业务DNS架构 案例介绍 案例一 案例二 本篇我们将先介绍DNS系统部署架构体系 ...

  9. java中北大学ppt总结+课后习题第二章(小宇特详解)

    java中北大学ppt总结+课后习题第二章(小宇特详解) 基本数据类型 Java语言有8种基本数据类型. 逻辑类型:boolean.1字节 整数类型: 1字节整数类型:byte. 2字节整数类型:sh ...

最新文章

  1. RISC-V 正在成为芯片世界中的 Linux
  2. MCU(多点控制单元)
  3. 从键盘输入一行字符,写入到string.txt文本文件中
  4. hdu 1540(线段树单点更新 区间合并)
  5. 删除unique key,删除原有的联合主键,新建新的联合逐渐,删除索引,修改索引,mysql5.7修改索引名称,查看最大连接数量,查看是否有ssl
  6. 逆向工程核心原理学习笔记(十):IA-32寄存器基本讲解
  7. ajax post请求不走success org.springframework.web.util.NestedServletException: Request processing failed
  8. BAT教程 :第五节(set命令详解)
  9. python自动搜索请求失败_http请求 request失败自动重新尝试代码示例
  10. path弧形参数 svg_如何计算圆弧(圆弧)的SVG路径
  11. 带你自学Python系列(十):用户输入input函数详解
  12. 利用公式画图_【高中数学】重要公式大汇总!
  13. Vue框架Element UI教程
  14. 移植LLDP协议到mips架构设备
  15. NEXMO 发送国际短信,遇到的问题
  16. iOS手机上查看html源码,View Source:在 iOS 上轻松查看网页源代码-网页源文件
  17. 音乐考试分数计算机,音乐艺考分数怎么算 音乐艺考分数比例
  18. 加载Glove预训练词向量到字典
  19. Spring boot——Actuator 详解
  20. 学习ARM开发(4)

热门文章

  1. 淘宝面试回来,想对程序员们谈谈
  2. 务虚:大局观、方法与关键点 个人经历例子说明 一种工作应对解决的方法
  3. 【论文技巧】Latex、Word、图片里的公式互转
  4. windowsXP源代码下载磁力链接
  5. C++中将字符串转换为数字
  6. 远程连接别人电脑教程,超详细(命令行方式)
  7. Android入门第3天-在Android Studio里配置虚拟器
  8. 基于事件驱动的微服务教程
  9. 乘法逆元求法的一些总结
  10. 一键转换手写为文字,有什么软件可以识别手写字