---------------------------------------------服务端-----------------------------------------------

 1 package C;
import java.io.*;
import java.net.*; public class Server extends ServerSocket
{
public Server(int serverPort) throws IOException
{
super(serverPort);
try
{
while (true)
{
Socket socket = accept();
new ServerThread(socket);
}
} catch (IOException e) {
e.printStackTrace();
}
finally {
close();
}
}
class ServerThread extends Thread /*建立服务端线程*/
{
private Socket socket;
private BufferedReader in;
private PrintWriter out;
public ServerThread(Socket s) throws IOException
{
this.socket = s;
in = new BufferedReader(new InputStreamReader(
socket.getInputStream(), "GB2312")); /*国标码*/
out = new PrintWriter(socket.getOutputStream(),true);
start(); /*开始线程*/
} public void run()
{
try {
while (true)
{
String line = in.readLine();
if ("finish".equals(line))
{
System.out.println("服务器已停止监听");
break;
}
System.out.println("接收到的数据:" + line);
String msg = "'" + line + "'已传输到服务器端.";
out.println(msg);
out.flush();
}
out.close();
in.close();
socket.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
public static void main(String[] args) throws IOException
{
System.out.println("服务器开始运行......");
new Server(2333); /*绑定端口号*/
} }
---------------------------------------------客户端-----------------------------------------------

 1 package C;
import java.io.*;
import java.net.*; public class Client
{
private Socket socket; /*定义socket连接*/
private BufferedReader reader; /*从字符输入流读取文本*/
private PrintWriter writer; /*打印到文本输出流*/ public Client(int serverPort) { /*定义客户端端口号*/
try { /*抛异常*/
socket = new Socket("123.206.78.55", serverPort);
reader = new BufferedReader(
new InputStreamReader(socket.getInputStream())); /*标准输入输出流*/
writer = new PrintWriter(socket.getOutputStream()); while (true)
{ BufferedReader in = new BufferedReader(
new InputStreamReader(System.in));
String message = in.readLine();
writer.println(message);
writer.flush(); /*不关闭流,清空输入缓存区*/ if ("finish".equals(message))
{
System.out.println("服务器已停止监听");
break;
}
String received = reader.readLine();
System.out.println(received);
} writer.close();
reader.close(); /*关闭流*/
socket.close(); }
catch (UnknownHostException ex)
{
ex.printStackTrace();
}
catch (IOException ex)
{
ex.printStackTrace(); /*在命令行打印异常信息在程序中出错的位置及原因*/
}
} public static void main(String[] args)
{
new Client(2333); /*绑定端口号*/
}
}

服务端是通过客户端的流式输入来实现监听和停止监听的。

java项目---用java实现简单TCP服务器监听(3星)的更多相关文章

  1. Scoket 服务器监听多个客户端发来的图片

    这是服务器 直接上代码 都有详细注释 注意线程需要自己手动关闭 不然程序会卡死 /* ######### ############ ############# ## ########### ### # ...

  2. 用nodejs搭建一个简单的服务监听程序

    作为一个从业三年左右的,并且从事过半年左右PHP开发工作的前端,对于后台,尤其是对以js语言进行开发的nodejs,那是比较有兴趣的,虽然本身并没有接触过相关的工作,只是自己私下做的一下小实验,但是还 ...

  3. Java 项目中一种简单的动态修改配置即时生效的方式 WatchService

    这种方式仅适合于比较小的项目,例如只有一两台服务器,而且配置文件是可以直接修改的.例如 Spring mvc 以 war 包的形式部署,可以直接修改resources 中的配置文件.如果是 Sprin ...

  4. Java 18 新特性:简单Web服务器 jwebserver

    在今年3月下旬的时候,Java版本已经更新到了18.接下来DD计划持续做一个系列,主要更新从Java 9开始的各种更新内容,但我不全部都介绍,主要挑一些有意思的内容,以文章和视频的方式来给大家介绍和学 ...

  5. 用Java编写你自己的简单HTTP服务器

    http://blog.csdn.net/yanghua_kobe/article/details/7296156 原文不错. 服务器支持的并发连接数,就是要开多少个线程,每个线程里一个socket监 ...

  6. eclipse中如何将java项目转为java Web项目

    有时候我们在eclipse中导入web项目时,系统当做一个java项目导入进来了.这时候在启动tomcat的服务器时无法找到该项目. 那么可以通过如下操作来将java项目转换为web项目. 1. 选择 ...

  7. 353 stars Java项目!Java小白必看!austin介绍 【第一话】

    有好几个群友问我为什么最近更新变慢了.工作忙是一方面,另一方面是我更新文章的动力确实下降了.近大半年一直在更新的<对线面试官>系列,到现在已经40篇了. 说实话,当时我更新该系列有很大一部 ...

  8. JAVA 图形开发之计算器设计(事件监听机制)

    /*文章中用到的代码只是一部分,需要源码的可通过邮箱联系我 1978702969@qq.com*/ 前段时间刚帮同学用MFC写了个计算器,现在学到JAVA的图形开发,就试着水了一个计算器出来.(可以说 ...

  9. udp服务器监听(多线程)

    项目一:udp1111 监听的有三个文件分别为: guiHello.java 有关界面和事件响应功能 UdpFunc.java是udp类的封装:发送和接收 udpServer.java是入口函数,无实 ...

随机推荐

  1. 开发一个简单的chrome插件-解析本地markdown文件

    准备软件环境 1. 软件环境 首先,需要使用到的软件和工具环境如下: 一个最新的chrome浏览器 编辑器vscode 2. 使用的js库 代码高亮库:prismjs https://prismjs. ...

  2. PHP 轻量级 REST框架

    GITHUB:https://github.com/jacwright/RestServer 简介: 一个PHP REST服务器,用于提供非常轻量级的REST API.很容易上手.独立于其他库和框架. ...

  3. 关于html的基础标签

    html: 超文本标记语言 h1 -- h6: 标题标签 一级标题,一个页面中只能存在一个h1 数字越大,标题的级别越小br:换行p:段落 自带换行,前后自带间隙a::::href属性---指定将要跳 ...

  4. 生命周期--JSF

    生命周期处理两种请求:初始请求和回发.当用户首次请求页面时,他或她正在首次请求该页面.当用户执行回发时,由于执行初始请求,他或她会提交以前加载到浏览器中的页面中包含的表单.当生命周期处理初始请求时,它 ...

  5. flv文件解析(纯c解析代码)

    参考链接: 1. FLV科普12 FLV脚本数据解析-Metadata Tag解析 https://blog.csdn.net/cabbage2008/article/details/50500021 ...

  6. Javase系列之面向对象(一)

    作为一个Java程序员,我们每天做的事情就是OOP(面向对象),可以说万物皆对象,Java是一门面向对象的程序语言,鉴于基本的面向对象知识也是一个较为庞杂的模块,所以博主我准备用多篇文章去介绍Java ...

  7. centos7 下安装mysql教程

    最近要在centos服务器上配置环境,在部署mysql的时候,碰到各种各样的问题,网上博客文章也是有各种坑,目前发现一个比较好的博客: https://blog.csdn.net/xiaomojun/ ...

  8. Qt笔记之QGADGET

    QGADGET宏类似于Q_OBJECT宏,是一个万能容器,至于这个宏所实现的功能,我也不懂,Q_OBJECT宏的功能到时了解一些,我想他们应该差不多,要想使用从Q_OBJECT继承来的类,就得在一开始 ...

  9. mongo中的游标与数据一致性的取舍

    除了特殊注释外,本文的测试结果均基于 spring-data-mongodb:1.10.6.RELEASE(spring-boot-starter:1.5.6.RELEASE),MongoDB 3.0 ...

  10. go语言关于线程与通道channal

    在go语言中,封装了多线程的使用方法,使其变得简单易用. 在这里说说自己一点体会,不正确的地方还是请各位大牛指正. 关于go语言的并发机制,这很简单,在你要执行的函数前面加上go即可 比如: pack ...