没有合适的资源?快使用搜索试试~ 我知道了~
javasocket服务端和客户端编程.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 159 浏览量
2021-11-25
10:03:21
上传
评论
收藏 71KB PDF 举报
温馨提示
![preview](https://dl-preview.csdnimg.cn/48724283/0001-6abf6c1d998742d03f41064c214b92e6_thumbnail.jpeg)
![preview-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/scale.ab9e0183.png)
试读
12页
javasocket服务端和客户端编程.pdf
资源推荐
资源详情
资源评论
![application/pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/release/download_crawler_static/48724283/bg1.jpg)
网络编程
java socket 编程
一、网络编程中两个主要的问题
一个是如何准确地定位网络上一台或多台主机, 另一个就是找到主机后如何可靠高效的
进行数据传输。
在 TCP/IP 协议中 IP 层主要负责网络主机的定位,数据传输的路由,由 IP 地址可以唯
一的确定 Internet 上的一台主机。
而 TCP 层则提供面向应用的可靠( tcp )的或非可靠( UDP )的数据传输机制,这是网
络编程的主要对象,一般不需要关心 IP 层是如何处理数据的。
目前较为流行的网络编程模型是客户机 /服务器 (C/S )结构。 即通信双方一方作为服务
器等待客户提出请求并予以响应。 客户则在需要服务时向服务器提出申请。 服务器一般作为
守护进程始终运行, 监听网络端口, 一旦有客户请求, 就会启动一个服务进程来响应该客户,
同时自己继续监听服务端口,使后来的客户也能及时得到服务。
二、两类传输协议: TCP 、UDP
TCP 是 Transfer Control Protocol 的 简称,是一种面向连接的保证 可靠传输的协议 。
通过 TCP 协议传输,得到的是一个 顺序的无差错的数据流 。发送方和接收方的成对的两个
socket 之间必须建 立连接,以便在 TCP 协议的基础上进行通信,当一个 socket (通常都
是 server socket )等待建立连接时,另一个 socket 可以要求进行连接,一旦这两个 socket
连接起来,它们就可以进行双向数据传输,双方都可以进行发送 或接收操作。
UDP 是 User Datagram Protocol 的简称,是一种 无连接的协议 ,每个数据报都是一
个独立的信息,包括完整的源地址或目的地址, 它在网络上以任何可能的路径传往目的地 ,
因此能否到达目的地,到达目的地的时间以及内容的正确性都是不能被保证的。
(一) 两者之间的比较
UDP :
1. 每个数据报中都给出了完整的地址信息,因此无需要建立发送方和接收方的连接。
2. UDP 传输数据 时有 大小限制 的,每个被传输的数据报 必须 限定在 64KB 之内 。
3. UDP 是一个不可靠的协议,发送方所发送的数据报并不一定以相同的次序到达接
收方。
TCP :
![](https://csdnimg.cn/release/download_crawler_static/48724283/bg2.jpg)
网络编程
1. 面向连接的协议,在 socket 之间进行数据传输之前 必然要建立连接 ,所以在 TCP
中需要连接时间。
2. TCP 传输数据大小限制,一旦连接建立起来,双方的 socket 就可以按统一的格式
传输大的 数据。
3. TCP 是一个可靠的协议, 它确保接收方完全正确地获取发送方所发送的全部数据。
(二)应用
1. TCP 在网络通信上有极强的生命力,例如远程连接( Telnet )和文件传输( FTP )
都需要不定长度的数据被可靠地传输。 但是可靠的传输是要付出代价的, 对数据内
容正确性的检验必然占用计算机的处理时间和网络的带宽, 因此 TCP 传输的 效率
不如 UDP 高。
4. UDP 操作简单,而且仅需要较少的监护,因此通常用于局域网高可靠性的分散系
统中 client/server 应用程序。 例如视频会议系统, 并不要求音频视频数据绝对的正
确,只要保证连贯性就可以了,这种情况下显然使用 UDP 会更合理一些。
三、基于 Socket 的 java 网络编程
1.什么是 Socket
网络上的两个程序通过一个双向的通讯连接实现数据的交换,这个双向链路的一端称
为一个 Socket 。Socket 通常用来实现客户方和服务方的连接。 Socket 是 TCP/IP 协议的一
个十分流行的编程界面,一个 Socket 由一个 IP 地址和一个端口号唯一确定。
但是, Socket 所支持的协议种类也不光 TCP/IP 一种,因此两者之间是没有必然联系
的。在 Java 环境下, Socket 编程主要是指基于 TCP/IP 协议的网络编程。
2.Socket 通讯的过程
Server 端 Listen( 监听 )某个端口是否有连接请求, Client 端向 Server 端发出
Connect( 连接 )请求, Server 端向 Client 端发回 Accept (接受)消息。一个连接就建立起来
了。 Server 端和 Client 端都可以通过 Send ,Write 等方法与对方通信。
对于一个功能齐全的 Socket ,都要包含以下基本结构,其工作过程包含以下四个基本
的步骤:
(1) 创建 Socket ;
(2) 打开连接到 Socket 的输入 /出流;
(3) 按照一定的协议对 Socket 进行读 /写操作;
(4) 关闭 Socket 。
![](https://csdnimg.cn/release/download_crawler_static/48724283/bg3.jpg)
网络编程
3.创建 Socket
java 在包 java.net 中提供了两个类 Socket 和 ServerSocket ,分别用来表示双向连接
的客户端和服务端。这是两个封装得非常好的类,使用很方便。其构造方法如下:
Socket(InetAddress address, int port);
Socket(InetAddress address, int port, boolean stream);
Socket(String host, int prot);
Socket(String host, int prot, boolean stream);
Socket(SocketImpl impl)
Socket(String host, int port, InetAddress localAddr, int localPort)
Socket(InetAddress address, int port, InetAddress localAddr, int localPort)
ServerSocket(int port);
ServerSocket(int port, int backlog);
ServerSocket(int port, int backlog, InetAddress bindAddr)
其中 address 、host 和 port 分别是双向连接中另一方的 IP 地址、主机名和端 口号,
stream 指明 socket 是流 socket 还是数据报 socket ,localPort 表示本地主机的端口号,
localAddr 和 bindAddr 是本地机器的地址( ServerSocket 的主机地址), impl 是 socket
的父类, 既可以用来创建 serverSocket 又可 以用来创建 Socket 。count 则表示服务端所能
支持的最大连接数。
Socket client = new Socket("127.0.01.", 80);
ServerSocket server = new ServerSocket(80);
注意,在选择端口时,必须小心。每一个端口提供一种特定的服务,只有给出正确的
端口,才能获得相应的服务。 0~1023 的端口号为系统所保留,例如 http 服务的端口号为
80 ,telnet 服务的端口号为 21,ftp 服务的端口号为 23,所以我们在选择端口号时,最好选
择一个大于 1023 的数以防止发生冲突。
在创建 socket 时如果发生错误,将产生 IOException ,在程序中必须对之作出处理。
所以在创建 Socket 或 ServerSocket 时必须捕获或抛出异常。
4.简单的 Client/Server 程序
(1) 客户端程序
import java.io.*;
//import java.lang.*;
剩余11页未读,继续阅读
资源评论
![avatar-default](https://csdnimg.cn/release/downloadcmsfe/public/img/lazyLogo2.1882d7f4.png)
![avatar](https://profile-avatar.csdnimg.cn/default.jpg!1)
songyunc
- 粉丝: 0
- 资源: 3万+
![benefits](https://csdnimg.cn/release/downloadcmsfe/public/img/vip-rights-1.c8e153b4.png)
下载权益
![privilege](https://csdnimg.cn/release/downloadcmsfe/public/img/vip-rights-2.ec46750a.png)
C知道特权
![article](https://csdnimg.cn/release/downloadcmsfe/public/img/vip-rights-3.fc5e5fb6.png)
VIP文章
![course-privilege](https://csdnimg.cn/release/downloadcmsfe/public/img/vip-rights-4.320a6894.png)
课程特权
![rights](https://csdnimg.cn/release/downloadcmsfe/public/img/vip-rights-icon.fe0226a8.png)
开通VIP
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)