• 1. Java高级应用编程 —— 网络编程V1.1
  • 2. 本章内容节知识点掌握程度难易程度网络基础知识网络基础知识理解IP地址和端口号掌握TCP与UDP掌握Socket编程Socket原理掌握基于TCP的Socket编程掌握难基于多线程的Socket编程理解难
  • 3. 网络基础知识网络应用程序 在已实现了网络互联的不同的计算机上运行的程序,这些程序之间可以交换数据 网络编程 — socket编程 通过使用套接字来达到进程间通信目的编程就是网络编程
  • 4. IP地址和端口号IP TCP/IP协议 协议 —网络中计算机之间通信的规则 大多数的网络协议都以TCP/IP协议为基础 IP地址 IP地址为每台计算机指定一个标识号,通过这 个标识号来指定要接收数据的计算机和识别发送数据的计算机IPV4/IPV6 IPV4 — 4个字节,即32位的二进制数表示 IPV6 — 16个字节的格式来表示IP地址
  • 5. IP地址和端口号 端口号是一个整数,用于表示该数据帧交给哪个应用程序来处理端口号 同一台计算机上不能有两个使用同一个端口的程序运行 端口数范围为0~65535 0~1023用于一些知名的网络服务和应用,用户的普通网络程序应使用1024以上的端口号 端口号 ? 一台计算机运上运行多个网络程序,IP地址只能保证把数据送到该计算机但如何确定把这些数据交给哪个程序呢
  • 6. IP地址和端口号端口号查看命令 在Windows 2000/XP/Server 2003中要查看端口,可以使用Netstat命令: 依次点击“开始→运行”,键入“cmd”并回车,打开命令提示符窗口。 在命令提示符状态下键入“netstat -a -n”,按下回车键后就可以看到以数字形式显示的TCP和UDP连接的端口号及状态。
  • 7. TCP与UDP TCP(Transmission Control Protocol) UDP(User Datagram Protocal) 面向连接的通信协议 提供两台计算机间的可靠的、端到端的字节流通信的协议 无连接的通信协议 UDP不保证可靠数据的传输 TCP与UDP
  • 8. Socket原理Socket原理 Socket—套接字 是网络应用程序编程的接口和一种机制 用套接字中的相关函数来建立连接和完成通信 Socket可以看成在两个程序进行通讯连接中的一个端点 将区分不同应用程序进程的三个参数 通信的目的的IP地址 使用的传输层协议 使用的端口号 与一个socket绑定
  • 9. 客户端11Socket原理 端口工作原理 服务器上的端口不是监听端口。 客户端21Port1:1230Port2:1235服务器监听Port:8888临时Port:2002临时Port:2001
  • 10. 基于TCP的Socket编程建立连接Serversocket(port)accept()OutputStreamInputStreamsocket(host,port)connectInputStreamOutputStream服务器端客户端Socket.close()Socket.close()ServerSocket.close()利用TCP协议进行通信 两个应用程序,有主从之分 一个称为服务器程(Server), 另外一个称为客户机程(Client) 交互过程 服务器程序创建一个ServerSocket,然后调用accept方法等待客户来连接 客户端程序创建一个socket并请求与服务器建立连接 刚才建立了连接的两个socket在一个单独的线程上对话 服务器开始等待新的连接请求socket 基于TCP的Socket编程
  • 11. 基于TCP的Socket编程 基于TCP的Socket编程 ServerSocket —— java.net.ServerSocket 实现服务器套接字 构造函数 ServerSocket(int port) ServerSocket(int port, int maxqu) accept( ) 方法用于等待客户端触发通信,返回值类型为Socket
  • 12. 基于TCP的Socket编程 基于TCP的Socket编程 Socket —— java.net.Socket 实现客户端套接字 构造函数 Socket(String hostName, int port) Socket(InetAddress a, int port) 可用方法 InetAddress getInetAddress( ) int getPort( ) int getLocalPort( ) InputStream getInputStream() OutputStream getOutputStream() void close()
  • 13. 基于TCP的Socket编程TCPServer.javaTCPClient.java
  • 14. 基于多线程的Socket编程 基于多线程的Socket编程 示例 TServer.java TClient.java
  • 15. 基于多线程的Socket编程 基于多线程的Socket编程
  • 16. 本章重点总结网络基础知识 IP地址和端口号 Socket编程 Socket原理 基于TCP的Socket编程 基于多线程的Socket编程
  • 17. 课后作业1、编写一服务器端程序,实现读取客户端发送过来的一组整数,表现为一组数与数之间用空格隔开的字符串。对这组整数进行排序处理后,返回相应的字符串给客户端,如果数据格式不正确,则返回错误信息,以本机作为服务器。 [必做题] 2、编写一个简单的socket通讯程序: [选做题] 2.1 客户机程序,从控制台输入字符串,发送到服务器端,并将服务器返回的信息显示出来。 2.2 服务器端程序,从客户机接收数据并打印,同时将从标准输入获取的信息发送给客户机 2.3 满足一个服务器可以服务多个客户
  • 18. 课后作业实现效果如图: 图1:服务器端效果: 图2:客户器端效果: