首先,创建一个服务器端的套接字,并规定套接字监听的端口:

ServerSocket serverSocket = new ServerSocket(8001);

然后,等待客户端通过端口8001的请求:

Socket socket=serverSocket.accept();

接下来创建客户端接收到的套接字的输入输出流,并将输入输出流转化成扫描器和写入器:

InputStream inputStream = incomingSocket.getInputStream();

OutputStream outputStream = incomingSocket.getOutputStream();

//将输入流转化为扫描器,输出流转化为写入器

Scanner inScanner=new Scanner(inputStream);

PrintWriter outPrintWriter= new PrintWriter(outputStream, true);

接下来就可以运用扫描器获得客户端传来的数据,并运用写入器将传来的数据发送给客户端:

String backString=inScanner.next();

outPrintWriter.println("you give me:"+backString);

然后,将每一个连接创建一个新的线程,独立运行。

运用命令行的telnet命令就可以连接上客户端:

可以多次创建连接:

一下为完整代码:

package server;

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 ThreadEchoServer {

public static void main(String[] args) {

// TODO Auto-generated method stub

try {

int i=1;

ServerSocket serverSocket = new ServerSocket(8001);

while(true){

//等待客户端通过端口8001请求的连接

Socket socket=serverSocket.accept();

System.out.println("spawning"+i);

Runnable runnable= new ThreadEchoHandler(socket);

Thread thread = new Thread(runnable);

thread.start();

i++;

}

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

class ThreadEchoHandler implements Runnable

{

private Socket incomingSocket;

public ThreadEchoHandler(Socket in){

incomingSocket=in;

}

public void run(){

try {

try {

//建立套接字的输入输出流

InputStream inputStream = incomingSocket.getInputStream();

OutputStream outputStream = incomingSocket.getOutputStream();

//将输入流转化为扫描器,输出流转化为写入器

Scanner inScanner=new Scanner(inputStream);

PrintWriter outPrintWriter= new PrintWriter(outputStream, true);

//运用写入器的println函数向客户端输出字符串

outPrintWriter.println("welcome!");

//将客户端传输的数据发送回去,如果客户端输入的数据为bye,则断开连接

boolean flag=false;

while(!flag&&inScanner.hasNext()){

String backString=inScanner.next();

outPrintWriter.println("you give me:"+backString);

if(backString.trim().equals("bye")){

flag=true;

}

}

} finally {

// TODO: handle exception

//关闭套接字(很重要,防止造成资源浪费)

incomingSocket.close();

}

} catch (IOException e) {

// TODO: handle exception

}

}

}

本文参考《Java核心技术卷II》

java多客户端请求响应_Java实现服务器端对多个客户端请求响应相关推荐

  1. java http请求图片_Java上传带图片的Http请求

    服务器端想得到的?不可以的,必需上传了,才可以. 如果中间想得到. Android提交post请分享上传图片,Java如何获取HttpEnAndroid端发送post请分享,上传图片,把byte[]弄 ...

  2. java实现等待程序响应_java – Ning:连接到websocket并等待响应

    使用Ning创建并连接到Websocket,以下是我的配置, NettyAsyncHttpProviderConfig config = new NettyAsyncHttpProviderConfi ...

  3. java 监听客户端的退出_Java socket 服务端如何监控客户端异常关闭?

    慕函数4003404 关闭是会抛出异常的,捕捉之后进行处理,退出循环 @Override public void run() { Boolean isExit = false; while (!isE ...

  4. java基于http协议客户端与服务器端的交互,通俗易懂客户端与服务器端交互原理(HTTP数据请求与HTTP响应,包括Servlet部分...

    经 常看到HTTP客户端与服务器端交互原理的各种版本的文章,但是专业术语太多,且流程过于复杂,不容易消化.于是就按照在 Servlet 里面的内容大致做了一些穿插.本来 连 Tomcat 容器 和 S ...

  5. java 请求响应_java http接口请求响应 request response

    接口类: 1 package org.sunshine.dcda.epg.wechat.controller.niao; 2 3 import javax.servlet.http.HttpServl ...

  6. java实现请求发送_java实现响应重定向发送post请求操作示例

    本文实例讲述了java实现响应重定向发送post请求操作.分享给大家供大家参考,具体如下: 关于重定向我们用的比较多的还是redirect:重定向,默认发送的get请求. return "r ...

  7. JAVA客户端数据传输_java模拟TCP通信实现客户端上传文件到服务器端

    java模拟TCP通信实现客户端上传文件到服务器端,供大家参考,具体内容如下 客户端 package com.zr; import java.io.FileInputStream; import ja ...

  8. java相关网络协议无响应_java网络协议有哪些

    上网的途径有很多,java是最普遍的,那么卑java网络协议有哪些?了解网络安全常识,首先就要了解计算机网络安全有哪些基本注意事项,下面佰佰安全网小编就带您认识一下吧. 概念 协议是指计算机通信网络中 ...

  9. 如何让服务器端持续监听客户端的请求?

    前面的程序,不管服务器端还是客户端,都有一个问题,就是处理完一个请求立即退出了,没有太大的实际意义.能不能像Web服务器那样一直接受客户端的请求呢?能,使用 while 循环即可. 修改前面的回声程序 ...

最新文章

  1. 小狗钱钱_✅每次构建待办事项列表应用程序时,都会有一只小狗? 死了?
  2. Java 锁粗化与循环
  3. 5G改变企业发展业务的方式-Vecloud微云
  4. 树莓派3B+运行arm_computer_library
  5. 怎样用计算机算出别人的出生日期,【怀孕出生日期计算器_怀孕出生日期计算器专题】- 天鹅到家...
  6. 线性代数---矩阵的各种问题求解方法
  7. macOS Monterey值得升级吗?Monterey 与 Big Sur的对比
  8. Qt文档阅读笔记-Multiple Inheritance Example 实例解析及Automatic Connections解析
  9. 2020过半,程序员“跳槽”还是“卧槽”,你想好了吗?
  10. SQL Server元数据损坏(metadata corruption)修复
  11. 《Linux编程》学习笔记 ·000【Linux介绍】
  12. 【Sqoop】Sqoop job实现增量导入的原理
  13. 博文视点大讲堂35期《Google Android创赢路线与产品开发实战》读者见面会
  14. Android报错: Caused by: java.lang.ClassCastException: com.github.mikephil.charting.charts.PieChart can
  15. GIS相关网站、社区、论坛收藏
  16. idea打包docker镜像
  17. Java分布式系统框架教程,架构设计
  18. 手机java应用安装失败_解决OPPO手机在Android studio 环境下安装失败问题
  19. Trajan求割边,强连通分量
  20. ipv4 pxe 联想start_PC开机出现Start pxe over ipv4解决办法 PC重启后显示start pxe over IPv4...

热门文章

  1. 查看zookeeper二进制日志方式
  2. Java银行类编程题
  3. modbus-crc16——c语言
  4. CodeForces - 868F Yet Another Minimization Problem
  5. iOS开发-网络-合理封装请求接口
  6. Gson实现自定义解析json格式
  7. [翻译] UIImageView-Letters
  8. MongoDB数据库CXX Driver编译
  9. javascript关于数组合并的——非比寻常
  10. 对抗攻击之SMI-FGSM:北航提出用空间动量提高对抗迁移性