参考自core java

 

 

  1. package com.lujinhong.corejava;
  2.  
  3. import java.io.IOException;
  4. import java.io.InputStream;
  5. import java.io.OutputStream;
  6. import java.io.PrintWriter;
  7. import java.net.ServerSocket;
  8. import java.net.Socket;
  9. import java.util.Scanner;
  10.  
  11. public class EchoServer {
  12.  
  13. public static void main(String[] args) {
  14.  
  15. try {
  16. ServerSocket serverSocket = new ServerSocket(8019);
  17. Socket socket = serverSocket.accept();
  18.  
  19. InputStream is = socket.getInputStream();
  20. OutputStream os = socket.getOutputStream();
  21.  
  22. PrintWriter pw = new PrintWriter(os);
  23. Scanner sc = new Scanner(is);
  24.  
  25. Boolean flag = false;
  26. String line = null;
  27. String exitString = "bye";
  28.  
  29. while(!flag && sc.hasNextLine()){
  30. pw.println("Hello, type " + exitString + " to exit!");
  31. line = sc.nextLine();
  32. if(line.trim().equals(exitString)){
  33. flag = true;
  34. }else{
  35. pw.println("Hello, "+line);
  36. }
  37. }
  38. pw.close();
  39. sc.close();
  40. serverSocket.close();
  41. } catch (IOException e) {
  42. e.printStackTrace();
  43. }
  44. }
  45. }

 

使用线程实现多个客户端同时访问:

 

  1. package com.lujinhong.corejava;
  2.  
  3. import java.io.IOException;
  4. import java.io.InputStream;
  5. import java.io.OutputStream;
  6. import java.io.PrintWriter;
  7. import java.net.ServerSocket;
  8. import java.net.Socket;
  9. import java.util.Scanner;
  10.  
  11. public class MultiEchoServer {
  12.  
  13. public static void main(String[] args) {
  14. try {
  15. ServerSocket serverSocket = new ServerSocket(8189);
  16. while (true) {
  17. Socket socket = serverSocket.accept();
  18.  
  19. Runnable r = new ThreadedEchoHandler(socket);
  20. Thread thread = new Thread(r);
  21. thread.start();
  22. }
  23.  
  24. } catch (IOException e) {
  25. e.printStackTrace();
  26. }
  27.  
  28. }
  29.  
  30. }
  31.  
  32. class ThreadedEchoHandler implements Runnable {
  33.  
  34. private Socket s = null;
  35.  
  36. public ThreadedEchoHandler(Socket socket) {
  37. s = socket;
  38. }
  39.  
  40. @Override
  41. public void run() {
  42. try {
  43. InputStream is = s.getInputStream();
  44. OutputStream os = s.getOutputStream();
  45.  
  46. PrintWriter pw = new PrintWriter(os);
  47. Scanner sc = new Scanner(is);
  48.  
  49. Boolean flag = false;
  50. String line = null;
  51. String exitString = "bye";
  52.  
  53. while (!flag && sc.hasNextLine()) {
  54. pw.println("Hello, type " + exitString + " to exit!");
  55. line = sc.nextLine();
  56. if (line.trim().equals(exitString)) {
  57. flag = true;
  58. } else {
  59. pw.println("Hello, " + line);
  60. }
  61. }
  62. sc.close();
  63. pw.close();
  64. } catch (IOException e) {
  65. e.printStackTrace();
  66. }
  67. }
  68. }

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.

 

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

建立简单的服务器端程序 分类: B1_JAVA 2013-10-08 21:53 503人阅读 评论(0) 收藏的更多相关文章

  1. CocoaPods安装和使用教程 分类: ios技术 ios相关 2015-03-11 21:53 48人阅读 评论(0) 收藏

    目录 CocoaPods是什么? 如何下载和安装CocoaPods? 如何使用CocoaPods? 场景1:利用CocoaPods,在项目中导入AFNetworking类库 场景2:如何正确编译运行一 ...

  2. Safecracker 分类: HDU 搜索 2015-06-25 21:12 12人阅读 评论(0) 收藏

    Safecracker Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total S ...

  3. C++ Virtual介绍 分类: C/C++ 2015-06-16 21:36 26人阅读 评论(0) 收藏

    参考链接:http://www.cnblogs.com/xd502djj/archive/2010/09/22/1832912.html 学过C++的人都知道在类Base中加了Virtual关键字的函 ...

  4. 树莓派入手(烧写系统,调整分区,配置Java环境,串口GPS配置) 分类: Raspberry Pi 2015-04-09 21:13 145人阅读 评论(0) 收藏

    原来的tf卡无故启动不起来,检查发现其文件系统分区使用率为0%. 数据全部丢失!!!!! 血的教训告诉我们备份文件系统的重要性,一切需要重头来.... 烧录系统 安装系统有两种方式, NOOBS工具安 ...

  5. 【solr基础教程之二】索引 分类: H4_SOLR/LUCENCE 2014-07-18 21:06 3331人阅读 评论(0) 收藏

    一.向Solr提交索引的方式 1.使用post.jar进行索引 (1)创建文档xml文件 <add> <doc> <field name="id"&g ...

  6. 哈夫曼树-Fence Repair 分类: 树 POJ 2015-08-05 21:25 2人阅读 评论(0) 收藏

    Fence Repair Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 32424 Accepted: 10417 Descri ...

  7. 二分图匹配(KM算法)n^3 分类: ACM TYPE 2014-10-01 21:46 98人阅读 评论(0) 收藏

    #include <iostream> #include<cstring> #include<cstdio> #include<cmath> const ...

  8. 跨服务器修改数据 分类: SQL Server 2014-08-21 21:24 316人阅读 评论(0) 收藏

     说明: 两个服务器: 192.168.0.22   A 192.168.0.3     B 数据库备份在A上 数据库在B上 在A上写: exec sp_addlinkedserver   'ITSV ...

  9. House Robber 分类: leetcode 算法 2015-07-09 20:53 2人阅读 评论(0) 收藏

    DP 对于第i个状态(房子),有两种选择:偷(rob).不偷(not rob) 递推公式为: f(i)=max⎧⎩⎨⎪⎪{f(i−1)+vali,f(i−2)+vali,robi−1==0robi−1 ...

随机推荐

  1. ORA-16047: DGID mismatch between destination setting and standby

    主库有报错如下: ORA-16047: DGID mismatch between destination setting and standby 原因:主库参数设置错误,检查下列参数:log_arc ...

  2. 洛谷—— P1080 国王游戏

    https://www.luogu.org/problem/show?pid=1080 题目描述 恰逢 H 国国庆,国王邀请 n 位大臣来玩一个有奖游戏.首先,他让每个大臣在左.右手上面分别写下一个整 ...

  3. color-在framwork中添加属性变量

    1.今天在修改framwork中的代码的时候,需要把自己在代码中写的一个#ffffff,变成在xml中引用的变量.具体操作方法如下 1)在 frameworks/base/core/res/res/v ...

  4. 1.2 Use Cases中 Metrics官网剖析(博主推荐)

    不多说,直接上干货! 一切来源于官网 http://kafka.apache.org/documentation/ Metrics 指标 Kafka is often used for operati ...

  5. 使用solr的DIHandler 构建mysql大表全量索引,内存溢出问题的解决方法

    solr官方给出的解决方式是: DataImportHandler is designed to stream row one-by-one. It passes a fetch size value ...

  6. Vue 自定义全局消息框组件

    消息弹框组件,默认3秒后自动关闭,可设置info/success/warning/error类型 效果图: 文件目录: Message.vue <template> <transit ...

  7. 【Educational Codeforces Round 33 D】Credit Card

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 每次遇到0的时候,看看当前累计的delta是多少. 如果大于0,则temp = d-delta; 小于0,取temp2 = min( ...

  8. 51Nod——N1284 2 3 5 7的倍数

    https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1284 基准时间限制:1 秒 空间限制:131072 KB 分值: 5  ...

  9. 我在世界最热创业孵化器YC学到的58件事

    Amir Elaguizy是网络扑克游戏平台MarketZero创始人,2011年,他创立的这家公司被Zynga收购,后在Zynga担任HTML5扑克游戏的CTO.目前他同时是社会化点评网站lark. ...

  10. Android 快速下载 Android framework 源码

    官网 Android framework源码git地址 github: https://github.com/android/platform_frameworks_base google 官方: h ...