使用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创建简单的服务器相关推荐

  1. C++使用socket的api创建简单服务器

    使用Socket API建立简易的TCP服务端 目录 建立一个socket 绑定接受客户端连接的端口bind 监听网络端口listen 等待接受客户端连接accept 向客户端发送一条数据send 关 ...

  2. pythonsocket自定义协议_Python实现同时兼容老版和新版Socket协议的一个简单WebSocket服务器...

    最近在做的一个项目中需要使用到HTML5中引入的WebSocket技术,本来以为应该很容易就能搞定,谁知道在真正上手开发了以后才发现有很多麻烦的地方,虽然我们是一个以前端开发和设计见长的团队,而且作为 ...

  3. 【SRH】------node创建简单的服务器

    //引入核心模块http const http =  require('http'); //创建服务器 http.createServer((req,res)=>{     //设置请求成功的状 ...

  4. python socket 实现的简单http服务器

    看这篇文章挺简约的收藏下,只需要替换reg.html  action  http://192.168.56.188:8000   为/ 即可不用改ip地址  post时 预备知识: 关于http 协议 ...

  5. Poco:创建个非常简单web服务器

    C++ Poco创建个非常简单web服务器,需要先安装Poco库,配置好Poco头文件和库的路径,window和Linux下都可以编译运行,运行后在浏览器上输入网址:http://127.0.0.1: ...

  6. 服务器端和客户端互发消息,Socket编程实现简单的服务器与客户端互发消息

    socket编程的大致步骤如下: 1.创建服务器端SocketServer,并定义SocketServer的监听端口; 2.ServerSocket调用accept( )方法,是指处于阻塞: 3.创建 ...

  7. 【小白入门】Socket和webSocket入门 这一篇就够了!用php的Socket自己实现简单webSocket服务器!

     这几天研究了下php实现webSocket的方法,网上查了不少博文,涉及到的知识点不少.但却非常值得学,因为这方面典型的应用场景非常的多,消息推送,聊天室,所有需要长连接的地方都会用到它.     ...

  8. 轻松创建nodejs服务器(1):一个简单nodejs服务器例子

    这篇文章主要介绍了一个简单nodejs服务器例子,本文实现了一个简单的hello world例子,并展示如何运行这个服务器,需要的朋友可以参考下 我们先来实现一个简单的例子,hello world. ...

  9. Socket网络编程--简单Web服务器(6)

    本来是想实现ssl连接的,但是弄了好久都不成功,就索性不做了,等以后有能力再做了.所以这一小节就是本次的最后一节了.就简单的说几个注意点. 1.加个配置文件 使用单例模式,使用一个类,该类保存一些信息 ...

最新文章

  1. IBatis.Net学习笔记(四)--再谈查询
  2. python3网络爬虫代码_《Python3网络爬虫开发实战代码》
  3. HTML与CSS基础之否定伪类(四)
  4. 名图空间实测_骗子!20来万的大众SUV号称7.8秒破百,实测后我服了!
  5. 八年溯源,如何巧搭区块链
  6. 2017.5.8 飞扬的小鸟 失败总结
  7. mysql8 距离计算_MySQL8 的 Hash join 算法
  8. 【Qt串口调试助手】1.3 - 重写ComboBox下拉框的鼠标点击事件,实现点击下拉框扫描可用串口
  9. shell语法中的test命令用法
  10. ios 友盟第三方登录遇到的各种坑。
  11. C++单例实现及回收(转)
  12. 交换十六进制的的高低字节
  13. C3P0连接池配置参数讲解
  14. window.open() 被拦截的问题解决
  15. 网易云音乐API使用
  16. C语言之猴子吃桃问题(函数练习题)
  17. 北斗/GPS定位模块冷启动、热启动、温启动有什么区别?
  18. JS显示团购剩下时间的代码整理
  19. 5 个必备有用的开源日志分析工具
  20. ORA-00937: not a single-group group function

热门文章

  1. 通俗易懂两种常用的多线程实现方式——Java并发系列学习笔记
  2. 1034 Head of a Gang (30 分) One way that the police finds the head of a gang is to check people‘s pho
  3. 【已解决】FileNotFoundError: [Errno 2] No such file or directory:_Python系列学习笔记
  4. 【解题报告+思路拓展】蓝桥杯 拉马车 2017年C组真题
  5. 存储引擎放弃使用索引的方式
  6. 10g数据库入门与实践 oracle_从实践中学习Oracle SQL笔记一
  7. linux命令行下载github文件,Linux命令行下使用GitHub
  8. java登录注册升级代码_【升级版】Java 登录,注册,传数据到后台小案例
  9. linux笔记之 开机服务启动的控制,系统日志的查看,防火墙的关闭
  10. RT-Thread Pin设备驱动API应用介绍