使用Socket及ServerSocket创建简单的服务器
使用Socket及ServerSocket创建简单的服务器
@(JAVA)[java]
参考自core java
package com.lujinhong.corejava;import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;public class EchoServer {public static void main(String[] args) {try {ServerSocket serverSocket = new ServerSocket(8019);Socket socket = serverSocket.accept();InputStream is = socket.getInputStream();OutputStream os = socket.getOutputStream();PrintWriter pw = new PrintWriter(os);Scanner sc = new Scanner(is);Boolean flag = false;String line = null;String exitString = "bye";while(!flag && sc.hasNextLine()){pw.println("Hello, type " + exitString + " to exit!");line = sc.nextLine();if(line.trim().equals(exitString)){flag = true;}else{pw.println("Hello, "+line);}}pw.close();sc.close();serverSocket.close();} catch (IOException e) {e.printStackTrace();}}
}
使用线程实现多个客户端同时访问:
package com.lujinhong.corejava;import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;public class MultiEchoServer {public static void main(String[] args) {try {ServerSocket serverSocket = new ServerSocket(8189);while (true) {Socket socket = serverSocket.accept();Runnable r = new ThreadedEchoHandler(socket);Thread thread = new Thread(r);thread.start();}} catch (IOException e) {e.printStackTrace();}}}class ThreadedEchoHandler implements Runnable {private Socket s = null;public ThreadedEchoHandler(Socket socket) {s = socket;}@Overridepublic void run() {try {InputStream is = s.getInputStream();OutputStream os = s.getOutputStream();PrintWriter pw = new PrintWriter(os);Scanner sc = new Scanner(is);Boolean flag = false;String line = null;String exitString = "bye";while (!flag && sc.hasNextLine()) {pw.println("Hello, type " + exitString + " to exit!");line = sc.nextLine();if (line.trim().equals(exitString)) {flag = true;} else {pw.println("Hello, " + line);}}sc.close();pw.close();} catch (IOException e) {e.printStackTrace();}}
}
In this program, we spawn a separate thread for each connection. This approach is not satisfactory for highperformance servers. You can achieve greater server throughput by using features of the java.nio package. See www.ibm.com/developerworks/java/library/j-javaio for more information.
使用Socket及ServerSocket创建简单的服务器相关推荐
- C++使用socket的api创建简单服务器
使用Socket API建立简易的TCP服务端 目录 建立一个socket 绑定接受客户端连接的端口bind 监听网络端口listen 等待接受客户端连接accept 向客户端发送一条数据send 关 ...
- pythonsocket自定义协议_Python实现同时兼容老版和新版Socket协议的一个简单WebSocket服务器...
最近在做的一个项目中需要使用到HTML5中引入的WebSocket技术,本来以为应该很容易就能搞定,谁知道在真正上手开发了以后才发现有很多麻烦的地方,虽然我们是一个以前端开发和设计见长的团队,而且作为 ...
- 【SRH】------node创建简单的服务器
//引入核心模块http const http = require('http'); //创建服务器 http.createServer((req,res)=>{ //设置请求成功的状 ...
- python socket 实现的简单http服务器
看这篇文章挺简约的收藏下,只需要替换reg.html action http://192.168.56.188:8000 为/ 即可不用改ip地址 post时 预备知识: 关于http 协议 ...
- Poco:创建个非常简单web服务器
C++ Poco创建个非常简单web服务器,需要先安装Poco库,配置好Poco头文件和库的路径,window和Linux下都可以编译运行,运行后在浏览器上输入网址:http://127.0.0.1: ...
- 服务器端和客户端互发消息,Socket编程实现简单的服务器与客户端互发消息
socket编程的大致步骤如下: 1.创建服务器端SocketServer,并定义SocketServer的监听端口; 2.ServerSocket调用accept( )方法,是指处于阻塞: 3.创建 ...
- 【小白入门】Socket和webSocket入门 这一篇就够了!用php的Socket自己实现简单webSocket服务器!
这几天研究了下php实现webSocket的方法,网上查了不少博文,涉及到的知识点不少.但却非常值得学,因为这方面典型的应用场景非常的多,消息推送,聊天室,所有需要长连接的地方都会用到它. ...
- 轻松创建nodejs服务器(1):一个简单nodejs服务器例子
这篇文章主要介绍了一个简单nodejs服务器例子,本文实现了一个简单的hello world例子,并展示如何运行这个服务器,需要的朋友可以参考下 我们先来实现一个简单的例子,hello world. ...
- Socket网络编程--简单Web服务器(6)
本来是想实现ssl连接的,但是弄了好久都不成功,就索性不做了,等以后有能力再做了.所以这一小节就是本次的最后一节了.就简单的说几个注意点. 1.加个配置文件 使用单例模式,使用一个类,该类保存一些信息 ...
最新文章
- IBatis.Net学习笔记(四)--再谈查询
- python3网络爬虫代码_《Python3网络爬虫开发实战代码》
- HTML与CSS基础之否定伪类(四)
- 名图空间实测_骗子!20来万的大众SUV号称7.8秒破百,实测后我服了!
- 八年溯源,如何巧搭区块链
- 2017.5.8 飞扬的小鸟 失败总结
- mysql8 距离计算_MySQL8 的 Hash join 算法
- 【Qt串口调试助手】1.3 - 重写ComboBox下拉框的鼠标点击事件,实现点击下拉框扫描可用串口
- shell语法中的test命令用法
- ios 友盟第三方登录遇到的各种坑。
- C++单例实现及回收(转)
- 交换十六进制的的高低字节
- C3P0连接池配置参数讲解
- window.open() 被拦截的问题解决
- 网易云音乐API使用
- C语言之猴子吃桃问题(函数练习题)
- 北斗/GPS定位模块冷启动、热启动、温启动有什么区别?
- JS显示团购剩下时间的代码整理
- 5 个必备有用的开源日志分析工具
- ORA-00937: not a single-group group function
热门文章
- 通俗易懂两种常用的多线程实现方式——Java并发系列学习笔记
- 1034 Head of a Gang (30 分) One way that the police finds the head of a gang is to check people‘s pho
- 【已解决】FileNotFoundError: [Errno 2] No such file or directory:_Python系列学习笔记
- 【解题报告+思路拓展】蓝桥杯 拉马车 2017年C组真题
- 存储引擎放弃使用索引的方式
- 10g数据库入门与实践 oracle_从实践中学习Oracle SQL笔记一
- linux命令行下载github文件,Linux命令行下使用GitHub
- java登录注册升级代码_【升级版】Java 登录,注册,传数据到后台小案例
- linux笔记之 开机服务启动的控制,系统日志的查看,防火墙的关闭
- RT-Thread Pin设备驱动API应用介绍