基本介绍:

  1. 基于客户端——服务端的网络通信
  2. 底层使用的是TCP/IP协议
  3. 应用场景举例:客户端发送数据,服务端接受并显示控制台
  4. 基于Socket的TCP编程
  5. 当客户端连接到服务端后,实际上客户端也是通过一个端口和服务端进行通讯的,这个端口是TCP/IP来分配,是不确定的,随机的

image.png

应用案例1:(使用字节流)

  1. 编写一个服务器端,和一个客户端
  2. 服务器端在9999端口监听
  3. 客户端连接到服务器端,发送”hello, server”,然后退出
  4. 服务器端接收到客户端发送的信息,输出,并退出

示意图:注意写的是两个程序
image.png
一个ServerSocket可以对应多个socket
image.png

应用案例2:(使用字节流)

  1. 编写一个服务器端,和一个客户端
  2. 服务器端在9999端口监听
  3. 客户端连接到服务器端,发送”hello, server”,并接收服务器端回发的”hello, client”,再退出
  4. 服务器端接收到客户端发送的信息,输出,并发送”hello, client”,再退出

image.png
image.png

应用案例3:(使用字符流)

  1. 编写一个服务端,和一个客户端
  2. 服务端在9999端口监听
  3. 客户端连接到服务端,发送”hello, server”,并接收服务端回发的”hello, client”,再退出
  4. 服务端接收到客户端发送的信息,输出,并发送”hello, client”,再退出

image.png
结束标记也可以使用writer.newLine(),使用writer.newLine()时,对方需要使用readLine()读取
image.png

应用案例4:

  1. 编写一个服务端,和一个客户端
  2. 服务器端在8888端口监听
  3. 客户端连接到服务端,发送一张片e:\qie.png
  4. 服务器端接收到客户端发送的图片,保存到src下,发送“收到图片“再退出
  5. 客户端接收到服务端发送的”收到图片”,再退出
  6. 该程序要求使用 StreamUtils.java

说明:使用BufferedInputStream和BufferedOutputStream字节流
示意图:
image.png
image.png

netstat指令

  1. netstat-an:可以查看当前主机网络情况,包括端口监听情况和网络连接情况
  2. netstat -an | more:可以分页显示
  3. 要求在dos控制台下执行

image.png