文章目录
1. Socket编程(网络编程)
在Java中,Socket为java.net包下的一个类;
中文翻译为套接字 ,套接字使用TCP提供了两台计算机之间的通信机制;客户端创建一个套接字,并尝试连接服务器的套接字;
表示为网络中两个机器的对接

连接建立后,通过使用 I/O 流在进行通信,每一个socket都有一个输出流和一个输入流,客户端的输出流连接到服务器端的输入流,而客户端的输入流连接到服务器端的输出流;
该通信是一个全双工通信方式,即TCP是一个双向的通信协议,意思就是可以双向同时读写数据(读的同时也能写);
具体步骤
- 服务器实例化一个 ServerSocket 对象,表示通过服务器上的端口通信;
- 服务器调用 ServerSocket 类的 accept() 方法,该方法将一直等待(阻塞方法),直到客户端连接到服务器上给定的端口;
- 服务器正在等待时,一个客户端实例化一个 Socket 对象,指定服务器名称和端口号来请求连接。
- Socket 类的构造函数试图将客户端连接到指定的服务器和端口号。如果通信被建立,则在客户端创建一个Socket 对象能够与服务器进行通信。
- 在服务器端,accept() 方法返回服务器上一个新的 socket 引用,该 socket 连接到客户端的 socket;
1. ServerSocket
这是java.net包下的一个类;
1. 构造方法
它有如下几个构造方法:
- public ServerSocket(int port) throws IOException
- 创建绑定到特定端口的服务器套接字 ,一个端口代表着一个唯一对应的进程;
- public ServerSocket(int port, int backlog) throws IOException
- backlog就是代表客户端的个数,这个参数就是用来限制客户端的连接最大数量;
- public ServerSocket(int port, int backlog, InetAddress address) throws IOException
- 使用指定的端口、侦听 backlog 和要绑定到的本地 IP 地址创建服务器。
前面两个构造方法没有传入IP地址,因为上面两个构造方法用了默认的IP地址(即localhost:127.0.0)
那为什么还需要传入指定的IP地址呢?因为有的性能良好的服务器上有多个网卡(一个网卡对应一个MAC地址),所以对应多个IP地址,所以得指定哪一个IP地址来创建服务器;
就我们的笔记本就有两个网卡(一个有线网卡和一个无线网卡);
- 使用指定的端口、侦听 backlog 和要绑定到的本地 IP 地址创建服务器。
- public ServerSocket() throws IOException
- 创建非绑定服务器套接字;
服务端socket处理客户端socket连接是需要一定时间的。ServerSocket有一个队列,存放还没有来得及处理的客户端Socket,这个队列的容量就是backlog的含义。如果队列已经被客户端socket占满了,如果还有新的连接过来 ,那么ServerSocket会拒绝新的连接。也就是说backlog提供了容量限制功能,避免太多的客户端socket占用太多服务器资源;
2. accept方法
Serversoket的一个最常用的方法就是accept了;
public Socket accept() throws IOException {
if (isClosed())
throw new SocketException("Socket is closed");
if (!isBound())
throw new SocketException("Socket is not bound yet");
Socket s =
最低0.47元/天 解锁文章
226

被折叠的 条评论
为什么被折叠?



