JAVA TCP通信练习

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

1、Server端

package com.hhdys.serviceimpl;import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.util.concurrent.TimeUnit;/*** Created by hhdys on 16/7/22.*/
public class Server {private static List<Socket> clients = new ArrayList<Socket>();public static void main(String[] args) {try {System.out.println("begin==================");ServerSocket serverSocket = new ServerSocket(8088);while (true) {System.out.println("请输入你要进行的操作!");Scanner scanner = new Scanner(System.in);while (scanner.hasNextInt()) {int i = scanner.nextInt();if (i == 1) {read(serverSocket);} else {write();}}scanner.close();}} catch (IOException e) {e.printStackTrace();} catch (Exception e) {e.printStackTrace();}System.out.println("end==============");}private static void read(ServerSocket serverSocket) throws Exception {System.out.println("开始监听===" + clients.size());final Socket socket = serverSocket.accept();clients.add(socket);new Thread(new Runnable() {public void run() {try {InputStream in = socket.getInputStream();Scanner scanner = new Scanner(in);while (true) {while (scanner.hasNextLine()) {System.out.println(scanner.nextLine());}TimeUnit.SECONDS.sleep(1);}} catch (IOException e) {e.printStackTrace();}catch (Exception e){e.printStackTrace();}}}).start();}public static void write() throws Exception {System.out.println("发送server消息====");Socket socket = clients.get(0);OutputStream out = socket.getOutputStream();BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(out));writer.write("我是服务端哈哈哈哈!你好");writer.newLine();writer.flush();//  writer.close();// out.close();}}

2、Client端

package com.hhdys.serviceimpl;import java.io.*;
import java.net.Socket;
import java.util.Scanner;
import java.util.concurrent.TimeUnit;/*** Created by hhdys on 16/7/22.*/
public class Client {private static Socket socket=null;public static void main(String[] args){System.out.println("begin==========");try {socket=new Socket("127.0.0.1",8088);socket.setKeepAlive(true);System.out.println("client======");OutputStream out = socket.getOutputStream();InputStream in = socket.getInputStream();final BufferedWriter writer=new BufferedWriter(new OutputStreamWriter(out));final Scanner scanner1 = new Scanner(in);Scanner scanner=new Scanner(System.in);while(true){System.out.println("输入你的操作!");if(scanner.hasNextInt()){int i=scanner.nextInt();if(i==1){new Thread(new Runnable() {public void run() {try {writer.write("我是客户端哈哈哈哈!你好");writer.newLine();writer.flush();} catch (IOException e) {e.printStackTrace();}}}).start();}else{while (scanner1.hasNextLine()) {System.out.println(scanner1.nextLine());}scanner1.close();}}TimeUnit.SECONDS.sleep(1);}} catch (IOException e) {e.printStackTrace();}catch (Exception e){e.printStackTrace();}System.out.println("end===========");}
}

转载于:https://my.oschina.net/hhdys412/blog/723869

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/397987.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[转载]UEditor报错TypeError: me.body is undefined

本文转载来自&#xff1a; UEditor报错TypeError: me.body is undefined 今天在使用UEditor的setContent的时候报错&#xff0c;报错代码如下 TypeError: me.body is undefined 或 Uncaught TypeError: Cannot set property innerHTML of undefined 错误的原因是没有等UEditor创…

微服务架构下的身份认证

从单体应用架构到分布式应用架构再到微服务架构&#xff0c;应用的安全访问在不断的经受考验。为了适应架构的变化、需求的变化&#xff0c;身份认证与鉴权方案也在不断的变革。面对数十个甚至上百个微服务之间的调用&#xff0c;如何保证高效安全的身份认证&#xff1f;面对外…

php缓存注入,利用Thinkphp 5缓存漏洞实现前台Getshell

原标题&#xff1a;利用Thinkphp 5缓存漏洞实现前台Getshell*本文原创作者&#xff1a;WindWing&#xff0c;属于FreeBuf原创奖励计划&#xff0c;禁止转载000 背景网站为了实现加速访问&#xff0c;会将用户访问过的页面存入缓存来减小数据库查询的开销。而Thinkphp5框架的缓存…

mac版小达人点读包怎么安装_小达人点读笔扩容实战:16G变128G

随着小达人点读笔可以点读的童书越来越多&#xff0c;笔的容量就是个尴尬的问题&#xff1a;是处理掉手头的16G容量的旧点读笔&#xff0c;重新再买32G容量的新点记笔吗&#xff1f;如果32G容量也不够用怎么办&#xff1f;官方可没有更大容量的点读笔了。删除原先的点读内容&am…

序列化与反序列化(记住密码)

平常我们在做"记住密码"的时候,大多都是使用Cookie保存,然后设置保存的时间,但是上次Frame(窗体应用程序中)项目中,一直没找到怎么保存Cookie的方法,所以采用使用序列化的方法完成。 //序列化 1.引用命名空间 Using System.IO 2.登录成功序列化代码: if(cb_savepw…

看电子书的好处

省钱&#xff0c;基本上都能从网上下载到。 在电脑上和手机上都可以看&#xff0c;而且排除了对光源的要求&#xff0c;因为这些设备的屏幕本身自带光源。 做笔记时可以直接截屏保存&#xff0c;节省时间&#xff0c;或者是复制粘贴。 携带方便&#xff0c;要么下载到本地&a…

WorldWind源码剖析系列:可渲染对象类RenderableObject

RenderableObject是WorldWind中所有需要渲染的对象的父类&#xff0c;继承了接口IRenderable和Icomparable。其派生类体系如下所示。RenderableObject的成员如下所示。 RenderableObjectList也继承自RenderableObject。 接口Irenderable内部仅仅定义下面三个接口&#xff0c;分…

php table 下拉框,LayerUI的table 里面加 select 下拉框 – Fly社区-Mikel

先上效果图&#xff1a;直接上代码//添加样式&#xff1a;.table-select-icon{position:absolute;right:10px;line-height:34px;color:#d3d3d3}.table-select-selected dl{display:block}.table-select dl{position:absolute;left:0;padding:5px 0;z-index:999;min-width:100%;…

家里wifi网速越来越慢_家里的wifi信号不好?有了它再也不怕网速慢啦

夏天太热&#xff0c;就想宅在家里刷刷剧、打打游戏、看看新闻。可是网速却不好&#xff0c;看一会儿&#xff0c;卡一会儿&#xff0c;本来天气就热&#xff0c;这样更加烦躁&#xff01;这WiFi信号怎么会这么差&#xff1f;有什么好办法能解决这个问题呢&#xff1f;只要有了…

html - meta name=viewport content=XX/ 标签常见属性及说明

<meta name"viewport" content"widthdevice-width, initial-scale1.0, minimum-scale0.5, maximum-scale2.0, user-scalableyes" />在网页的<head>中增加以上这句话&#xff0c;可以让网页的宽度自动适应手机屏幕的宽度。其中&#xff1a;widt…

数据权限设计(原创)

数据权限是针对数据表中行级和列级的控制&#xff0c;相对操作权限&#xff0c;颗粒度更细&#xff0c;复杂度更高&#xff0c;因为在项目中也有相关需求&#xff0c;是直接通过硬编码sql查询条件控制的&#xff0c;后期维护起来比较困难。所以有了一些想法&#xff0c;后期也将…

python文件操作实验总结,[干货分享]Python文件操作技巧总结

引言小伙伴们&#xff0c;今天给大家讲解一下python程序下的文件操作完整技巧梳理&#xff0c;都是笔者总结的干货。通过本文阅读&#xff0c;不仅可以带来生产力提升&#xff0c;也可以开发小脚本为生活带来乐趣。首先不知道大家对python有没有了解&#xff0c;不太会用的小伙…

触摸事件

•如果想监听一个view上面的触摸事件&#xff0c;之前的做法是自定义一个view实现view的touches方法&#xff0c;在方法内部实现具体处理代码•通过touches方法监听view触摸事件&#xff0c;有很明显的几个缺点必须得自定义view由于是在view内部的touches方法中监听触摸事件&am…

7价 半导体掺杂_天津大学封伟团队:新型半导体二维原子晶体锗硅烷材料的带隙调控...

xxxxxxxxxxxx【研究背景】xxxx新型二维半导体原子晶体兼具原子级厚度、纳米级层状结构、极高的载流子迁移率&#xff0c;是构建未来高性能纳米光电器件的核心材料。带隙是二维半导体电子器件和光电子光器件中最重要的基本参数之一&#xff0c;是影响二维半导体电子器件开关比和…

面向对象下

面向对象下 多态的定义是什么&#xff1f; 在同一个方法中&#xff0c;参数的类型相同但是由于运行的环境不同而表现出来的不同形式。&#xff08;父类引用指向子类对象&#xff09; 什么叫对象转型&#xff0c;什么叫向上转型&#xff0c;什么叫向下转型&#xff1f; 向上转型…

vs2017怎么安装python包,vs2017安装pygame,vs2017安装python第三方包

vs2017有独立的python环境&#xff1b;所以想在vs2017开发python并使用第三方包&#xff0c;需要在vs2017中操作&#xff0c;完成第三方包的安装。一&#xff0c;查看vs2017有哪些版本的python&#xff0c;当前使用的是哪个版本工具--》Python--》Python环境可以看到vs2017包含…

基于opencv在摄像头ubuntu根据视频获取

&#xfeff;&#xfeff;基于opencv在摄像头ubuntu根据视频获取 1 工具 原料 平台 &#xff1a;UBUNTU12.04 安装库 Opencv-2.3 2 安装编译执行步骤 安装编译opencv-2.3 參考http://blog.csdn.net/xiabodan/article/details/23547847 提前下载OPENCV源代码包 官方&am…

yum 安装 phpmyadmin

1.安装apache yum -y install httpd httpd-devel 2.安装phpmyadmin yum -y -install phpmyadmin 3.配置phpmyadmin 修改/etc/httpd/conf.d/phpmyadmin.conf <Directory "/usr/share/phpmyadmin"> Order Deny,Allow # Deny from all Allow from All <…