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

 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. 如何推进企业流程体系建设?_K2 BPM

    推进全集团统一的流程体系为什么比想象的难? 很多企业在推进全集团的流程管理过程中,经常会有一种“望山跑死马”的感觉.“各成员公司都建立起与集团公司统一的流程管理体系”,看似很简单一件事情,但没有经过良 ...

  2. Problem after converting keras model into Tensorflow pb - 将keras模型转换为Tensorflow pb后的问题

    I'm using keras 2.1.* with tensorflow 1.13.* backend. I save my model during training with .h5 forma ...

  3. cdh日常维护常见问题及解决方案

    为数据节点添加新硬盘 - 挂载硬盘到指定文件夹.如`/dfs_diskb`: - 打开cloudera manager -> hdfs -> 配置 -> DataNode -> ...

  4. 最大流 USTC1280

    挺有意思的一题,最小路径之后最大流 /************************************************************** 作者:陈新 邮箱:cx2pirate ...

  5. numpy数据集练习

    #1. 安装scipy,numpy,sklearn包 import numpy as np #2. 从sklearn包自带的数据集中读出鸢尾花数据集data from sklearn.datasets ...

  6. Selenium 工作原理

    Selenium是ThoughtWorks公司研发的一个强大的基于浏览器的开源自动化测试工具,它通常用来编写web应用的自动化测试.早期也即Selenium1.x时期主要使用Selenium RC(S ...

  7. JAVA第3,4课(内容合并)

    JAVA  第三课 代码执行顺序

  8. element-项目用到偏门方法~

    开发项目的时候,组件库的使用有时会为我们节省开发时间,提高开发效率,但组件库样式有时与我们的设计图出入很大,还有的方法也很偏门,主要官方文档有时候对于一些方法和属性介绍的也比较少,以下是我在工作中总结 ...

  9. mui组件 输入表单 快捷键mf

    <form class="mui-input-group"> <div class="mui-input-row"> <label ...

  10. Rewrite json

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...