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

 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. powershell脚本:你的文件已经被黑客篡改.ps1

    本人原创powershell脚本分享. 脚本用途:列出某目录下,所有软件签名不符的文件. 系统需求: win7 + powershell 2.0 及 以上. #nd你的文件已经被黑客篡改.ps1 ps ...

  2. git上传到github时犯的错误

    以下是git的正确顺序 git config --global user.name "xxx" 全局注册名字 git config --global user.email &quo ...

  3. 【整理】QT .pro文件中的变量说明

    注释 以"#"开始的行,直到结束 模板变量 告诉qmake生成哪种makefile TEMPLATE = app 其中 app - 表示该工程建立一个应用程序的makefile.这 ...

  4. list练习

    usernames = ['cwl','pn','gxn','hyp']passwords = ['123456','abc123','324234','23423']#pn#sdfsdf #需要校验 ...

  5. PCA降维—降维后样本维度大小

    之前对PCA的原理挺熟悉,但一直没有真正使用过.最近在做降维,实际用到了PCA方法对样本特征进行降维,但在实践过程中遇到了降维后样本维数大小限制问题. MATLAB自带PCA函数:[coeff, sc ...

  6. 第一周CTF (合天CTF)

    0X00 第一周 0x01 基础 50 . 下载下来发现是一个exe文件 ,尝试了一下没打开,然后把后缀名一个一个的试一试,改成txt用记事本打开,得到了一个“假冒的flag” *(别问我怎么知道的) ...

  7. nginx申请并配置免费https

    你还在让你的网站裸奔在网络上吗?在这里我们将搭建免费版HTTPS,免费的,免费的,免费的,重要的事情说三遍,申请来源为letsencrypt, 超文本传输协议HTTP协议被用于在Web浏览器和网站服务 ...

  8. vue生命周期和钩子函数

    new Vue 创建vue实例 init events & liftcycle 开始初始化 beforeCreate 组件刚被创建,组件属性计算之前,如data属性等 init injecti ...

  9. 练习UML类图中的类的表示

    第一部分:UML类图(class diagram) 类图用来展现一组类.类的特性以及其类相互之间的关系,一个类图由一组类以及它们之间的关系构成,类图用来对系统的领域概念以及静态结构进行建模. 在软件模 ...

  10. wav文件系列_2_Python实现读写

    本文介绍了 Python 实现音频读写的方法.Python wave 模块提供便捷的 wav 文件操作.该模块并不支持压缩与解压,但支持单声道/立体声的转换. 参考: [1] wave — Read ...