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 ...
随机推荐
- 详细nginx配置SSL
1.nginx的ssl 让nginx实现用https来访问网站,http是80端口,https是443端口. https其实就是一种加密的http 2.为什么要加密 例子:在网上银行汇款,在你汇款的过 ...
- Internet History,Technology,and Security - Dawn of Electronic Computing(Week 1)
一 War Time Computing and Communication 讲到电子计算机,你不得不提起第二次世界大战,虽说二战是人类历史上史无前例的大灾难,不过从某种程度来说,它确实促进了社会的发 ...
- NAT回流(Twice NAT)Hairping 参数详解
内网用户需要通过域名访问内网的服务器,一般商用环境是无法访问的,需要经过以下配置,原理不说了,直接说配置. nat (inside,inside) source dynamic inside-net ...
- luogu P5171 Earthquake
题目描述 给定 a,b,c ,求满足方程 ax+by⩽c 的非负整数解个数. 输入格式 输入三个整数 a,,b,,c . 输出格式 输出一个整数表示答案. 类欧几里得算法 #include<cs ...
- metronic 表格插件 datatables
官方网站:https://datatables.net/ css引入:datatables.min.css && datatables.bootstrap.css && ...
- [TimLinux] JavaScript 事件
1. 简介 JavaScript与HTML之间的交互式通过事件来实现的,事件是文档或浏览器窗口中发生的一些特定的交互瞬间,使用事件处理程序来预订事件,从而在事件发生时,能够执行特定的代码.事件使页面的 ...
- 牛客剑指offer(持续更新~)
第一题:二维数组的查找 题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数, ...
- 笔记||Python3之函数
函数: 函数的概念:就是一段代码:一段操作流程. 优点:代码量少.简洁. 维护起来方便 -- 在函数的定义进行修改 函数的定义:1 - def 函数名(): 函数内容 2 - 函 ...
- CSS中的变量使用,var()语法
参考博客:https://blog.csdn.net/qq_34206361/article/details/53690414
- Java环境变量配置超详细教程
https://blog.csdn.net/Mxdon_on/article/details/89461365 概述 Java的环境配置并不是特别难,但是对刚上手的新手来说确实是一个大问题 首先下载j ...