ServerSocket类的常用方法
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类的常用方法的更多相关文章
- FileItem类的常用方法
FileItem类的常用方法: 1. boolean isFormField() isFormField方法用于判断FileItem类对象封装的数据是一个普通文本表单字段,还是一个文件表单字段,如果 ...
- Java String类的常用方法
String(byte[ ] bytes):通过byte数组构造字符串对象. String(char[ ] value):通过char数组构造字符串对象. String(Sting original) ...
- [转载]C#.NET中Dns类的常用方法及说明
IP是一种普遍应用于因特网.允许不同主机能够相互找到对方的寻址协议.IP地址由4个十进制的数字号码所组成,而每一个号码的值介于0~255之间,它虽然解决了网络上计算机的识别问题,但是IP地址确不容易记 ...
- Java 中 String 类和StringBuilder 类的常用方法
String 类提供了许多用来处理字符串的方法,例如,获取字符串长度.对字符串进行截取.将字符串转换为大写或小写.字符串分割等,下面我们就来领略它的强大之处吧. String 类的常用方法: 结合代码 ...
- Socket类 以及 ServerSocket类 讲解
Socket类 套接字是网络连接的端点,套接字使应用可以从网络中读取数据,可以向网络中写入数据.不同计算机上的两个应用程序可以通过连接发送或接收字节流,以此达到相互通信的目的. 为了从一个应用程序向另 ...
- socket系列之服务器端socket——ServerSocket类
一般地,Socket可分为TCP套接字和UDP套接字,再进一步,还可以被分为服务器端套接字跟客户端套接字.这节我们先关注TCP套接字的服务器端socket,Java中ServerSocket类与之相对 ...
- Python 部分系统类的常用方法整理
下面是常用的几个系统类的常用方法整理: list: 列表[1, 2,...] set: 集合,无重复元素{1, 2,...} str: 字符串 dict: 字典{a:'a', b:'b',...} T ...
- 数组的三种声明方式总结、多维数组的遍历、Arrays类的常用方法总结
1. 数组的三种声明方式 public class WhatEver { public static void main(String[] args) { //第一种 例: String[] test ...
- java网络编程ServerSocket类 和Socket类的常用构造方法及其方法
Socket类Socket(InetAddress address, int port) 创建一个流套接字并将其连接到指定 IP 地址的指定端口号.Socket(String host, int po ...
随机推荐
- KETTLE多表关联的同步一张表的两种实现方式
以下操作都在5.0.1版本下进行开发,其余版本可以进行自动比对 在平时工作当中,会遇到这种情况,而且很常见.比如:读取对方的多个视图或者表,写入目标库的一张表中,就涉及到多表的同步. 多表同步可以有以 ...
- replace find join
>>> s='spam' >>> s=s.replace('m','111') >>> s 'spa111' >>> where ...
- 牛客竞赛-Who killed Cock Robin
Who killed Cock Robin? I, said the Sparrow, With my bow and arrow,I killed Cock Robin. Who saw him d ...
- 【性能优化】404- 从 12.67s到1.06s 性能优化实战
作者:jerryOnlyZRJ 来源:https://juejin.im/post/5b6fa8c86fb9a0099910ac91 本文是对之前同名文章的修正,将所有webpack3的内容更新为we ...
- 【JS】310- 使用 focusout 事件,解决 iOS 键盘收起不归位问题
点击上方"前端自习课"关注,学习起来~ ,0); } }, 这时,我们问题得到解决了,当从输入框输入内容,然后点击键盘的完成收起键盘,效果符合我 ...
- centos7—计划任务(at、cron)
centos7—计划任务(at.cron) 2018-08-08 14:33:17 coisini_覔 阅读数 3751更多 分类专栏: Linux基础 crond/at 版权声明:本文为博主原创 ...
- Cisco学习记录(一):Cisco Packet Tracer官网下载方法
通过Cisco Packet Tracer学习计算机网络知识 本人大三狗一枚,一直以来都在学java, python, web开发的我,经过一番决定,毅然决然要开始深入学习计算机网络!通过Cisco ...
- 关于页面打印window.print()的样式问题
当我们打印网页的时候.有时候会发现.打印出来的.跟网页上看到的样式的差别有点大.这其中可能有的问题是.样式问题. 当调用打印(window.print())方法时.打印机会在网页的样式中查找 @med ...
- 《Java基础知识》Java成员变量,成员方法,构造方法和析构方法
一 成员变量 成员变量是指类的一些属性定义,标志类的静态特征,它的基本格式如下: [访问修饰符][修饰符][类型][属性名称]= [初始值] 访问修饰符:public(公共的):protected(受 ...
- K8S命令-Kubectl 命令大全
参考1:https://jimmysong.io/kubernetes-handbook/guide/kubectl-cheatsheet.html?h=kubectl Kubctl 命令是操作 ku ...