java项目---用java实现简单TCP服务器监听(3星)
---------------------------------------------服务端----------------------------------------------- 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星)的更多相关文章
- Scoket 服务器监听多个客户端发来的图片
这是服务器 直接上代码 都有详细注释 注意线程需要自己手动关闭 不然程序会卡死 /* ######### ############ ############# ## ########### ### # ...
- 用nodejs搭建一个简单的服务监听程序
作为一个从业三年左右的,并且从事过半年左右PHP开发工作的前端,对于后台,尤其是对以js语言进行开发的nodejs,那是比较有兴趣的,虽然本身并没有接触过相关的工作,只是自己私下做的一下小实验,但是还 ...
- Java 项目中一种简单的动态修改配置即时生效的方式 WatchService
这种方式仅适合于比较小的项目,例如只有一两台服务器,而且配置文件是可以直接修改的.例如 Spring mvc 以 war 包的形式部署,可以直接修改resources 中的配置文件.如果是 Sprin ...
- Java 18 新特性:简单Web服务器 jwebserver
在今年3月下旬的时候,Java版本已经更新到了18.接下来DD计划持续做一个系列,主要更新从Java 9开始的各种更新内容,但我不全部都介绍,主要挑一些有意思的内容,以文章和视频的方式来给大家介绍和学 ...
- 用Java编写你自己的简单HTTP服务器
http://blog.csdn.net/yanghua_kobe/article/details/7296156 原文不错. 服务器支持的并发连接数,就是要开多少个线程,每个线程里一个socket监 ...
- eclipse中如何将java项目转为java Web项目
有时候我们在eclipse中导入web项目时,系统当做一个java项目导入进来了.这时候在启动tomcat的服务器时无法找到该项目. 那么可以通过如下操作来将java项目转换为web项目. 1. 选择 ...
- 353 stars Java项目!Java小白必看!austin介绍 【第一话】
有好几个群友问我为什么最近更新变慢了.工作忙是一方面,另一方面是我更新文章的动力确实下降了.近大半年一直在更新的<对线面试官>系列,到现在已经40篇了. 说实话,当时我更新该系列有很大一部 ...
- JAVA 图形开发之计算器设计(事件监听机制)
/*文章中用到的代码只是一部分,需要源码的可通过邮箱联系我 1978702969@qq.com*/ 前段时间刚帮同学用MFC写了个计算器,现在学到JAVA的图形开发,就试着水了一个计算器出来.(可以说 ...
- udp服务器监听(多线程)
项目一:udp1111 监听的有三个文件分别为: guiHello.java 有关界面和事件响应功能 UdpFunc.java是udp类的封装:发送和接收 udpServer.java是入口函数,无实 ...
随机推荐
- tensorflow 只恢复部分模型参数
import tensorflow as tf def model_1(): with tf.variable_scope("var_a"): a = tf.Variable(in ...
- 【webpack学习笔记】a02-管理资源
在webpack 中,各种资源要引入,要用到module配置,比如css/图片/字体等等. 例如: module.exports = { entry: './src/app.js', //这是入口文件 ...
- Java线程面试题Top50
不管你是新程序员还是老手,你一定在面试中遇到过有关线程的问题.Java 语言一个重要的特点就是内置了对并发的支持,让 Java 大受企业和程序员的欢迎.大多数待遇丰厚的 Java 开发职位都要求开发者 ...
- 一个简单的Quartz定时任务
package com.shuadan.quartz; import org.springframework.scheduling.annotation.Scheduled; import org.s ...
- union、union all 、distinct的区别和用途
1.从用途上讲 它们都具有去重的效果 2.从效率上讲 distinct通常不建议使用,效率较低;union all 和union 而言,union all效率更高;原因是:union 相当于多表查询出 ...
- JAVA面向对象之继承
继承: 子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法 class 子类 extends 父类 { } 继承的特性: 子类拥有父类非private的属性,方法. 子类可以拥有自己 ...
- DevExpress v18.2版本亮点——Reporting篇(三)
行业领先的.NET界面控件——DevExpress v18.2日前正式发布,本站将以连载的形式为大家介绍新版本新功能.本文将介绍了DevExpress Reporting v18.2 的新功能,新版3 ...
- Spring MVC流程
这是spring mvc框架结构图,图片是很早在网上撸过来的,具体在哪忘了…… 早期学习Springmvc 并没有具体了解过,只知道这样用很爽,最近了解下基本结构流程及组件所在…… 执行流程 Spri ...
- 文件访问权限:更改用户ID
本文来探讨一下通过更改用户ID来获取合适的文件访问权限.由于更改组ID的规则与用户ID相同,我们在这里只探讨用户ID. 纸上得来终觉浅 先了解以下几个基本知识: 用户ID包括:实际用户ID.有效用户I ...
- 详解angular2组件中的变化检测机制(对比angular1的脏检测)
组件和变化检测器 如你所知,Angular 2 应用程序是一颗组件树,而每个组件都有自己的变化检测器,这意味着应用程序也是一颗变化检测器树.顺便说一句,你可能会想.是由谁来生成变化检测器?这是个好问题 ...