1.accept:侦听并接受此套接字的连接;此方法在连接传入之前一直阻塞。

2.setSoTimeout(timeout)方法的作用时设置超时时间,通过指定超时timeout值启用/禁用超时功能,以ms为单位。

  必须在进入阻塞前调用这个方法,才能生效,一旦超时,程序会触发SocketTimeoutException异常;默认值是0即永远等待。

Server.java

package com.company.s7;

import java.io.IOException;
import java.net.ServerSocket; public class Server {
public static void main(String[] args) {
try {
ServerSocket serverSocket=new ServerSocket(8000);
System.out.println(serverSocket.getSoTimeout());
serverSocket.setSoTimeout(4000);
System.out.println(serverSocket.getSoTimeout());
System.out.println(); System.out.println("begin "+System.currentTimeMillis());
serverSocket.accept();
System.out.println(" end "+System.currentTimeMillis());
}catch (IOException e){
e.printStackTrace();
}
}
}

Client.java

package com.company.s7;

import java.io.IOException;
import java.net.Socket; public class Client {
public static void main(String[] args) {
try {
System.out.println("client begin "+System.currentTimeMillis());
Socket socket=new Socket("localhost",8000);
System.out.println("client end "+System.currentTimeMillis());
}catch (IOException e){
e.printStackTrace();
System.out.println("catch "+System.currentTimeMillis());
}
}
}

backlog参数含义:

允许接受客户端连接请求的个数。

如果队列已满,则拒接该连接。

blacklog参数如果小于等于0,则使用默认值50;

Server.java

package com.company.s71;

import javax.sound.midi.Soundbank;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket; public class Server {
public static void main(String[] args) throws IOException, InterruptedException {
ServerSocket serverSocket=new ServerSocket(8088,3); //sleep(5000)的作用是不让ServerSocket调用accept()方法,
//而是由客户端Socket先发奇10个连接请求
//然后在执行accept方法时只能接收3个连接
Thread.sleep(5000); System.out.println("accept1 begin");
Socket socket1=serverSocket.accept();
System.out.println("accept1 end"); System.out.println("accept2 begin");
Socket socket2=serverSocket.accept();
System.out.println("accept2 end"); System.out.println("accept3 begin");
Socket socket3=serverSocket.accept();
System.out.println("accept3 end"); System.out.println("accept4 begin");
Socket socket4=serverSocket.accept();
System.out.println("accept4 end"); System.out.println("accept5 begin");
Socket socket5=serverSocket.accept();
System.out.println("accept5 end"); socket1.close();
socket2.close();
socket3.close();
socket4.close();
socket5.close(); serverSocket.close();
}
}

Client.java

package com.company.s71;

import java.io.IOException;
import java.net.Socket; public class Client {
public static void main(String[] args) throws IOException {
Socket socket1=new Socket("localhost",8088);
Socket socket2=new Socket("localhost",8088);
Socket socket3=new Socket("localhost",8088);
Socket socket4=new Socket("localhost",8088);
// Socket socket5=new Socket("localhost",8088); }
}

先启动server.java,然后快速的启动client.java;

但是让我很奇怪的是服务端启动五秒之后,再启动客户端,反而能正确的执行;

如果由知道的人,请留言区告知,谢谢。

ServerSocket类的常用方法的更多相关文章

  1. FileItem类的常用方法

    FileItem类的常用方法: 1.  boolean isFormField() isFormField方法用于判断FileItem类对象封装的数据是一个普通文本表单字段,还是一个文件表单字段,如果 ...

  2. Java String类的常用方法

    String(byte[ ] bytes):通过byte数组构造字符串对象. String(char[ ] value):通过char数组构造字符串对象. String(Sting original) ...

  3. [转载]C#.NET中Dns类的常用方法及说明

    IP是一种普遍应用于因特网.允许不同主机能够相互找到对方的寻址协议.IP地址由4个十进制的数字号码所组成,而每一个号码的值介于0~255之间,它虽然解决了网络上计算机的识别问题,但是IP地址确不容易记 ...

  4. Java 中 String 类和StringBuilder 类的常用方法

    String 类提供了许多用来处理字符串的方法,例如,获取字符串长度.对字符串进行截取.将字符串转换为大写或小写.字符串分割等,下面我们就来领略它的强大之处吧. String 类的常用方法: 结合代码 ...

  5. Socket类 以及 ServerSocket类 讲解

    Socket类 套接字是网络连接的端点,套接字使应用可以从网络中读取数据,可以向网络中写入数据.不同计算机上的两个应用程序可以通过连接发送或接收字节流,以此达到相互通信的目的. 为了从一个应用程序向另 ...

  6. socket系列之服务器端socket——ServerSocket类

    一般地,Socket可分为TCP套接字和UDP套接字,再进一步,还可以被分为服务器端套接字跟客户端套接字.这节我们先关注TCP套接字的服务器端socket,Java中ServerSocket类与之相对 ...

  7. Python 部分系统类的常用方法整理

    下面是常用的几个系统类的常用方法整理: list: 列表[1, 2,...] set: 集合,无重复元素{1, 2,...} str: 字符串 dict: 字典{a:'a', b:'b',...} T ...

  8. 数组的三种声明方式总结、多维数组的遍历、Arrays类的常用方法总结

    1. 数组的三种声明方式 public class WhatEver { public static void main(String[] args) { //第一种 例: String[] test ...

  9. java网络编程ServerSocket类 和Socket类的常用构造方法及其方法

    Socket类Socket(InetAddress address, int port) 创建一个流套接字并将其连接到指定 IP 地址的指定端口号.Socket(String host, int po ...

随机推荐

  1. Java 从入门到进阶之路(十一)

    之前的文章我们介绍了一下 Java 中的继承,接下来我们继续看一下 Java 中的继承. 在有些时候,我们通过类继承的方式可以获取父类的方法,但是有些时候父类为我们提供的方法并不完全符合我们的需求,这 ...

  2. 【开发者portal在线开发插件系列三】字符串 及 可变长度字符串

    基础篇 基础场景见上面两个帖子,这里单独说明字符串和可变长度字符串的用法. 话不多说,开始今天的演(表)示(演) Profile和插件开发 添加一个string类型的属性: 在插件里添加一条数据上报消 ...

  3. 基于串口通信做my_printf时遇到的坑儿

    首先,完成了串口向终端putty的打印函数ConsolePrint(),但该函数只能打印字符串,无法像stdio库中的printf函数一样打印整数和浮点数等. 因此,我先是使用了标准库stdio中的s ...

  4. Java修炼——文件字节输入输出流复制和缓冲流复制

    一:文件字节输入输出流复制 首先明确数据源和目的文件,然后就是"中转站",最后就是关闭 package com.bjsxt.ioproject; import java.io.Fi ...

  5. 主题: 002.04 Tkinter 星空大战

    为了更加熟练 Tkinter 的应用,决定只用 Tkinter 来写一个游戏,而不是用 Pygame, 在过程中,出了很多很大的问题,最后留了一点已知的问题,不想在花时间去找出来,不过整个程序算跑的没 ...

  6. Mysql基础02-约束

    约束与索引 概念 1.数据完整性(Data Integrity)是指数据的精确性(Accuracy)和可靠性(Reliability). 实体完整性(Entity Integrity):例如,同一个表 ...

  7. 当用python读取几十万行文本时,会出现什么状况?

      前言本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理.作者:accumulate_zhang    我在使用python读取几十 ...

  8. ARTS-S shell脚本实现循环

    #!/bin/bash i=0 while [ "$i" != "100" ] && [ "$RESP" != " ...

  9. 2019百度阿里Java面试题(基础+框架+数据库+分布式+JVM+多线程)

    前言 很多朋友对面试不够了解,不知道如何准备,对面试环节的设置以及目的不够了解,因此成功率不高.通常情况下校招生面试的成功率低于1%,而社招的面试成功率也低于5%,所以对于候选人一定要知道设立面试的初 ...

  10. Harbor搭建企业级docker仓库

    一. Harbor简介 1.1 Harbor介绍 Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,通过添加一些企业必需的功能特性,例如安全.标识和管理等,扩展了开源Do ...