Socket编程快速入门实战

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地址来创建服务器;
      就我们的笔记本就有两个网卡(一个有线网卡和一个无线网卡);
  • 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 = 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值