如何实现服务器转发客户端消息,socket 怎么实现服务器与客户端不停的互发消息呢?...

在 java Socket应用的 3-4节 我把老师的代码修改了一下可以手动输入文字让对面的服务器/客户端接受,

下面是代码:

//客户端

package 通讯;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.OutputStream;

import java.io.OutputStreamWriter;

import java.io.PrintStream;

import java.net.Socket;

import java.util.Scanner;

public class client {

public static void main(String[] args) {

try {

Socket socket = new Socket("127.0.0.1", 8885);

while (true) {  //死循环重复步骤

OutputStream os = socket.getOutputStream();

PrintStream bw = new PrintStream(os);

Scanner input = new Scanner(System.in);

System.out.println("你想对对面的服务器说些什么");

bw.print(input.next());//从键盘输入读取一行 打印到输出流

bw.flush();

socket.shutdownOutput();

InputStream is = socket.getInputStream();

InputStreamReader isr = new InputStreamReader(is);

BufferedReader br = new BufferedReader(isr);

String s;

while ((s = br.readLine()) != null) {

System.out.println("服务器端说:" + s);

}

socket.shutdownInput();

br.close();

isr.close();

is.close();

bw.close();

os.close();

}

} catch (IOException e) {

e.printStackTrace();

}

}

}

//服务器端

package 通讯;

import java.io.BufferedOutputStream;

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.OutputStream;

import java.io.PrintStream;

import java.io.PrintWriter;

import java.net.ServerSocket;

import java.net.Socket;

import java.util.Scanner;

public class server {

public static void main(String[] args) {

try {

ServerSocket serversocket = new ServerSocket(8885);

System.out.println("正在等待连接。。。。。。。");

Socket socket = serversocket.accept();

while(true){//死循环重复

InputStream is = socket.getInputStream();

InputStreamReader isr = new InputStreamReader(is);

BufferedReader br = new BufferedReader(isr);

String s;

while ((s = br.readLine()) != null) {

System.out.println("客户端说" + s);

}

socket.shutdownInput();

OutputStream os = socket.getOutputStream();

PrintStream bw = new PrintStream(os);

Scanner input = new Scanner(System.in);

System.out.println("你想对面的客户机说些什么");

bw.print(input.next());//从键盘输入读取一行打印到输出流

bw.flush();

socket.shutdownOutput();

bw.close();

os.close();

br.close();

isr.close();

is.close();

}

} catch (IOException e) {

e.printStackTrace();

}

}

}

没加while死循环之前是,服务器等待请求,客户端发送一行文字,服务器接受后再发一行文字回去,程序结束。之后我又加了两个while死循环希望它能一直重复互发消息的步骤,但是出现了如下的异常,代码应该怎么修改才能实现我想要的不停的互发消息呢?

bae9d7dc5ac4c9d1035b9e5538d2e809.png

67fcd383acb14eb5ae21a9010c088c75.png

3b293018be7cde656b05fba7419ff802.png

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

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

相关文章

前端学习(509):水平和垂直居中第二种方式

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>居中布局一</title><style>.parent{wid…

pg高性能服务器,Pgpool-II 负载均衡对PG的性能影响

Pgpool-II相当于中间件&#xff0c;Pgpool-II与PG是解耦合的&#xff0c;基于这样的机制&#xff0c;Pgpool-II可以搭建在已经存在的任意版本的PG主从结构上&#xff0c;主从结构的实现与Pgpool-II无关&#xff0c;可以通过slony等工具或者PG自身的流复制机制实现。一、拓扑结构…

股上涨和下跌天数比_面对下跌,如何信心十足地逢低买入?

大众总是错的&#xff0c;对吗?也许大部分时间都是这样。但在股市“逢低买进”的想法&#xff0c;可能是金融市场中群策群力的一个罕见例子。这是一个有大量学术支持的老想法。但这并不是说股票市场总是在上涨&#xff0c;事实上&#xff0c;当下跌来临的时候&#xff0c;它们…

前端学习(511):两列布局的第一种方式

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>两列布局</title><style>.left{width: …

5g存储服务器是什么项目,5G时代对服务器有什么要求?

5G是什么?5G,其中字母G代表generation(代、际)。即第五代移动电话行动通信标准&#xff0c;也称第五代移动通信技术。5G的应用范围很广&#xff0c;大致可以包括以下几个方面&#xff1a;1、5G综合产业链分析2、5G与物联网3、5G与车联网4、5G与无线医疗5G对服务器的要求“云端…

压缩命令_Linux gzip命令:压缩文件或目录

gzip 是 Linux 系统中经常用来对文件进行压缩和解压缩的命令,通过此命令压缩得到的新文件,其扩展名通常标记为“.gz”。 再强调一下,gzip 命令只能用来压缩文件,不能压缩目录,即便指定了目录,也只能压缩目录内的所有文件。 gzip 命令的基本格式如下: [root@localhost ~]…

前端学习(512):两列布局的第一种方式的优缺点

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>两列布局</title><style>.left{width: …

svn服务器如何扫描文件,基于文件仓库进行建模协作(EA+SVN)

在文章《协同建模&版本管理(基于EA)》一文中&#xff0c;我们提到EA有四种协同建模方式&#xff1a;基于本地文件基本共享文件仓库基于模型数据库基于云服务今天我们主要介绍一下第二种方式 基于共享文件仓库进行建模协作。这种方式主要是对EA中各个模型包应用版本控制来实…

获取本地 qt_用QT实现视频/音乐播放组件

前言我已经有四五天没有发布文章了&#xff0c;趁着这个周末有空&#xff0c;就又开始构思我们自己的QT组件库中的新组件&#xff0c;思考还有哪些有用、有趣、值得研究学习并构建实现的组件&#xff0c;于是又有了两个新的目标&#xff0c;即多媒体播放组件和地图组件。之所以…

c++文件读写

http://stlchina.huhoo.net/bin/view.pl/Main/STLDetailString 添加#include <fstream> using namespace std; View Code 1 //ofstream myfile("c:\\1.txt",ios::out|ios::trunc);2 //3 //myfile<<"中国国国" << endl<< "网…

谁在窥屏_TheShy直播被窥屏搞怕了,为了防止被窥屏,这个做法绝了

前言&#xff1a;英雄联盟LPL赛区已经发展了十年&#xff0c;请你大胆试想下&#xff0c;如果终有一天英雄联盟会被其他游戏所淹没替代&#xff0c;让你选出自己心目中最强的游戏玩家&#xff0c;你的脑海里首先浮现的是谁的身影呢&#xff1f;笔者的脑海里首先是TheShy。TheSh…

前端学习(516):两列布局的第三种解决方案

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>第三种实现方案</title><style>.parent…

qchart 设置线颜色_实战PyQt5: 137-QChart图表之散点图

散点图(scatter chart)将序列显示为一组点。值由点在图表中的位置表示。类别由图表中的不同标记表示。散点图通常用于比较跨类别的聚合数据。在QChart中&#xff0c;使用类QScatterSeries创建散点图。QScatterSeriesQScatterSeries类在散点图中显示数据。散点数据在图表上显示为…

C#下如何实现服务器 + 客户端的聊天程序

最近也在接触SOCKET编程&#xff0c;在当今这样一个网络时代&#xff0c;很多技术都以网络为中心在诞生&#xff0c;至少我认为是这样的&#xff0c;而SOCKET套接字接口&#xff0c;在实现网络通讯上处于关键地位&#xff0c;所以不会SOCKET是不行的。首先&#xff0c;本文主要…

部署gogs_可以更快地查阅 Gogs 文档了!

# 可以更快地查阅 Gogs 文档了&#xff01;作为程序员&#xff0c;如何高效、准确地查阅文档是日常开发工作中的必备技能。长期以来&#xff0c;优秀开源项目的官方文档都是部署在国外服务器上&#xff0c;从国内访问非常慢&#xff0c;而由于众所周知的限制&#xff0c;部分文…