Java 网络教程: ServerSocket
原文链接 作者:Jakob Jenkov 译者:homesick
用java.net.ServerSocket实现java服务通过TCP/IP监听客户端连接,你也可以用Java NIO 来代替java网络标准API,这时候需要用到 ServerSocketChannel。
创建一个 ServerSocket连接
以下是一个创建ServerSocket类来监听9000端口的一个简单的代码
ServerSocket serverSocket = new ServerSocket(9000);
监听请求的连接
要获取请求的连接需要用ServerSocket.accept()方法。该方法返回一个Socket类,该类具有普通java Socket类的所有特性。代码如下:
ServerSocket serverSocket = new ServerSocket(9000); boolean isStopped = false;while(!isStopped){ Socket clientSocket = serverSocket.accept(); //do something with clientSocket}
对每个调用了accept()方法的类都只获得一个请求的连接。
另外,请求的连接也只能在线程运行的server中调用了accept()方法之后才能够接受请求。线程运行在server中其它所有的方法上的时候都不能接受客户端的连接请求。所以”接受”请求的线程通常都会把Socket的请求连接放入一个工作线程池中,然后再和客户端连接。更多关于多线程服务端设计的文档请参考 java多线程服务
关闭客户端Socket
客户端请求执行完毕,并且不会再有该客户端的其它请求发送过来的时候,就需要关闭Socket连接,这和关闭一个普通的客户端Socket连接一样。如下代码来执行关闭:
socket.close();
关闭服务端Sockets
要关闭服务的时候需要关掉 ServerSocket连接。通过执行如下代码:
serverSocket.close();
Java 网络教程: ServerSocket相关推荐
- Java网络编程和NIO详解开篇:Java网络编程基础
老曹眼中的网络编程基础 转自:https://mp.weixin.qq.com/s/XXMz5uAFSsPdg38bth2jAA 我们是幸运的,因为我们拥有网络.网络是一个神奇的东西,它改变了你和我的 ...
- Java实例教程(上)
第一个Java程序 Java 枚举 Java注释 Java创建对象 Java访问实例变量和方法 Java局部变量实例 Java编译错误 Java 实例变量示例 Java类变量 静态变量示例 Java静 ...
- Java网络编程 Socket、ServerSocket 详解,方法介绍及完整代码示例
Java网络编程 Socket.ServerSocket 详解,方法介绍及完整代码示例 概念 什么是网络编程? 网络编程是指编写运行在多个设备(计算机)的程序,这些设备通过网络连接起来.当这些通过网络 ...
- Java网络编程(四)—— ServerSocket(一)
Java网络编程(四)-- ServerSocket(一) Java网络编程(四)-- ServerSocket(一) 总述 创建ServerSocket 绑定端口 使用ServerSocket 总述 ...
- JAVA网络编程之Socket
Socket网络编成是一种较为底层的网络数据传输,很多语言都支持. 本例是根据菜鸟教程中的Java网络编程而写. 详细内容参考请参考:http://www.runoob.com/java/java-n ...
- 有什么好的Java自学教程视频,适合初学者
动力节点Java培训最新上线Java实验班,等你来测试自己适不适合学习Java编程哦! 随着互联网的发展,视频教程充斥着网络,很多人为了能够在视频教程中捞取一桶金,纷纷投入视频售卖的大军之中,其中不乏 ...
- Java菜鸟教程笔记
参考:http://www.runoob.com/java/java-tutorial.html Java 基本数据类型 内置数据类型 引用类型 Java 变量类型 Java 局部变量 实例变量 类变 ...
- Java 网络编程API以及实例
Java 网络编程 网络编程是指编写运行在多个设备(计算机)的程序,这些设备都通过网络连接起来. java.net包中J2SE的API包含有类和接口,它们提供低层次的通信细节.你可以直接使用这些类和接 ...
- java 密钥工厂 desede_20145212 实验五《Java网络编程》
20145212 实验五<Java网络编程> 一.实验内容1.运行下载的TCP代码,结对进行,一人服务器,一人客户端: 2.利用加解密代码包,编译运行代码,一人加密,一人解密: 3.集成代 ...
最新文章
- 停课不停学 阿里云天池免费开放AI实训平台
- Android 使用OpenCV的三种方式(Android Studio)
- linux ls什么意思,linux – 你如何确定bash ls的颜色是什么意思?
- 【软件测试】结构化分支和循环语句的白盒测试
- 29 WM配置-策略-出库策略2-定义“紧急FIFO”策略(Stringent FIFO)
- 建立p2p互相连接的社区集群机器人设计(一)
- 【ActiveReports 大数据分析报告】用数据分析的手段告诉你,复联4有多火爆?
- 派尼数据库连接池配置
- php里无法找到该网页,thinkphp搭建网站后端,入口文件找不到(无法加载)
- word页眉页脚,奇偶不同
- 第N次重装系统之win10注册表
- Linux Ubuntu 鼠标变为十字架锁死解决办法
- ccf 考试时间_梳理丨2020年五大学科竞赛考试时间安排出炉!
- JAVA SE 005——类型转换
- SQL 发送Email
- vue项目接入腾讯im
- 中国石油大学北京计算机专业保研,2020年中国石油大学(北京)保研率是多少...
- 12306排队是什么意思_12306订单请求排队中是什么意思 要等多久
- toad mysql导入excel_toad导入表数据库
- CVE-2020-14644 weblogic iiop反序列化漏洞分析
热门文章
- c#执行插入sql 时,报错:异常信息:超时时间已到。在操作完成之前超时时间已过或服务器未响应
- c++/ boost 库常见错误及解决方法总结
- pache tomcat慢速HTTP拒绝服务攻击安全问题解决办法
- VMware Horizon Client剪贴板异常问题解决
- 解决8080端口被占用问题
- thinkphp5(tp5)中success跳转页面和弹窗问题解决
- Python:检查‘Dictionary‘是否为空似乎不起作用
- 高度等于动态宽度(CSS流体布局)
- 使用Android开发工具23版更新Eclipse
- Java的“ for each”循环如何工作?