该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

线程一章有个聊天程序,我运行之后客户端没将服务器的内容显示在JTextArea中,求解答

客户端程序

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

import java.io.*;

import java.net.*;

public class SimpleChatClientA {

JTextArea incoming;

JTextField outgoing;

BufferedReader reader;

PrintWriter writer;

Socket sock;

public void go(){

JFrame frame = new JFrame("Ludicrously Simple Chat Client");

JPanel mainPanel = new JPanel();

incoming = new JTextArea(15,50);

incoming.setLineWrap(true);

incoming.setWrapStyleWord(true);

incoming.setEditable(false);

JScrollPane qScroller = new JScrollPane(incoming);

qScroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);

qScroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);

outgoing = new JTextField(20);

JButton sendButton = new JButton("send");

sendButton.addActionListener(new SendButtonListener());

mainPanel.add(qScroller);

mainPanel.add(outgoing);

mainPanel.add(sendButton);

Thread readerThread = new Thread(new IncomingReader());

readerThread.start();

frame.getContentPane().add(BorderLayout.CENTER, mainPanel);

setUpNetworking();

frame.setSize(400,500);

frame.setVisible(true);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

private void setUpNetworking(){

try{

sock = new Socket("127.0.0.1",5000);

InputStreamReader streamReader = new InputStreamReader(sock.getInputStream());

reader = new BufferedReader(streamReader);

writer = new PrintWriter(sock.getOutputStream());

System.out.println("networking established");

}catch(IOException ex){

ex.printStackTrace();

}

}

public class SendButtonListener implements ActionListener{

public void actionPerformed(ActionEvent ev){

try{

writer.println(outgoing.getText());

writer.flush();

}catch(Exception ex){

ex.printStackTrace();

}

outgoing.setText("");

outgoing.requestFocus();

}

}

public class IncomingReader implements Runnable{

public void run(){

String message;

try{

while((message = reader.readLine())!=null){

System.out.println("read "+message);

incoming.append(message+"\n");

}

}catch(Exception ex){

ex.printStackTrace();

}

}

}

public static void main(String[] args){

new SimpleChatClientA().go();

}

}

服务器程序

import java.io.*;

import java.net.*;

import java.util.*;

public class VerySimpleChatServer {

ArrayList clientOutputStreams;

public class ClientHandler implements Runnable{

BufferedReader reader;

Socket sock;

public ClientHandler(Socket clientSocket){

try{

sock = clientSocket;

InputStreamReader isReader = new InputStreamReader(sock.getInputStream());

reader = new BufferedReader(isReader);

}catch(Exception ex){

ex.printStackTrace();

}

}

public void run(){

String message;

try{

while((message = reader.readLine())!=null){

System.out.println("read $"+message);

tellEveryone(message);

}

}catch(Exception ex){

ex.printStackTrace();

}

}

}

public static void main(String[] args){

new VerySimpleChatServer().go();

}

public void go(){

clientOutputStreams = new ArrayList();

try{

ServerSocket serverSock = new ServerSocket(5000);

while(true){

Socket clientSocket = serverSock.accept();

PrintWriter writer = new PrintWriter(clientSocket.getOutputStream());

clientOutputStreams.add(writer);

Thread t = new Thread(new ClientHandler(clientSocket));

t.start();

System.out.println("got a connection");

}

}catch(Exception ex){

ex.printStackTrace();

}

}

public void tellEveryone(String message){

Iterator it = clientOutputStreams.iterator();

while(it.hasNext()){

try{

PrintWriter writer = (PrintWriter) it.next();

writer.println(message);

writer.flush();

}catch(Exception ex){

ex.printStackTrace();

}

}

}

}

headfirstjava最新版本下载_读过HeadFirstJava的大神进来看看相关推荐

  1. PROTEUS最新版本下载CSDN_最强大冒险二游戏下载最新版本下载_抖音最强大冒险二测试版游戏下载最新版本 v1.0...

    最强大冒险二游戏下载最新版本是一款趣味冒险的游戏,各种经历的人生,体验到无限的乐趣分享,超刺激的挑战玩法,各种冒险的经历过程,每次都能感受到最佳的刺激表现,界面的功能,对于你们的帮助作用也是相当的大, ...

  2. 华为 模拟器 linux,华为ensp模拟器最新版本下载_华为ensp模拟器3264位官方版下载V1.3.00.100 - 系统之家...

    华为交换机模拟器ensp是图形化网络仿真平台,完美呈现真实设备实景(包括华为最新的ARG3路由器和X7系列的交换机),支持大型网络模拟,让你有机会在没有真实设备的情况下也能够实验测试,学习网络技术,了 ...

  3. 【开发环境】Mac 中安装 Python3 最新版本 ( 下载 Python 最新版本 | 安装 Python3 | 验证 Python3 )

    文章目录 一.下载 Python 最新版本 二.安装 Python3 三.验证 Python3 一.下载 Python 最新版本 下载 最新 Python 版本 ; 进入 Python 主页 http ...

  4. echarts4.8.0最新版本下载,亲测可用

    echarts4.8.0最新版本下载: 百度网盘: https://pan.baidu.com/s/1UTw6mHwXzuBWT5lnYfMLAg 提取码:9vqv

  5. android 9下载地址,狂野飙车9安卓版下载地址 最新版本下载

    标签: 解锁 狂野飙车9安卓版下载地址 最新版本下载 好消息,时隔六年,狂野飙车系列最新续作<狂野飙车9:竞速传奇>国服版终于与大家见面啦!九游平台将为大家提供狂野飙车9安卓版的下载资源, ...

  6. Visual Studio 2017 version 15.9 官方最新版本下载(含那个啥码)

    Visual Studio 2017 version 15.9 官方最新版本下载 (含那个啥码) 简单介绍,VS2017有3个版本: ①community,社区版,含基本的开发功能,免费!免费!免费! ...

  7. 一键ghost【onekey ghost】最新版本下载,一键ghost官网

    一键ghost[onekey ghost]最新版本下载,一键ghost官网 一键ghost[onekey ghost]最新版本下载,一键ghost官网 posted on 2013-11-09 23: ...

  8. QT最新版本下载安装(QT5.15及QT6.X)

    QT最新版本下载及安装 包含了QT环境和QT Creator集成开发环境(IDE) 下载 (QT5.15及之后版本不再支持离线安装) 5.14及之前版本下载 QT5.15及之后版本下载 QT5.15及 ...

  9. bugzilla 最新版本下载 3.01 增加更多新功能

    bugzilla 最新版本下载 3.01 增加更多新功能 内容来自bugzila 官方站点,本站定期与bugzilla.org官方站点同步数据 最新本站下载 http:// Release Notes ...

最新文章

  1. 源文件封装为IP的步骤
  2. linux sort 源码_Linux: 史上最全的sort命令案例,打包带走吧
  3. Linux Named 进程启动、停止脚本
  4. python登陆,注册小程序
  5. 三种复方门冬维甘滴眼液的抗菌能力比较
  6. Redis集群安装及配置步骤
  7. C# Base64方式的编码与解码
  8. 从三流本科到北京985高校研究生,这是我走过的四年
  9. 华三 h3c DHCP
  10. 用Hough投票做物体检测的3篇文献
  11. 关于python随机抽取各类型不重复值的思考(sample与randint的区别)
  12. 100项PPT制作技术
  13. 让 CPU 告诉你硬盘和网络到底有多慢 1
  14. 奇*信往期秋招笔试知识点总结
  15. 【Pyecharts50例】添加背景图片/Logo
  16. Guest用户如何切换到administrator用户桌面
  17. 女孩取名:带日字旁好听有内涵的女孩名字
  18. win10快捷键【常用】桌面切换等快捷键
  19. Python爬虫之爬取笔趣阁小说下载到本地文件并且存储到数据库
  20. 分析总结:关于上海开饭店的成本和利润核算

热门文章

  1. 2345王牌浏览器九宫格个性化设置
  2. ie浏览器发送错误报告提示怎么关闭
  3. Easyui+Spring+Mybatis完整示例(后台)
  4. java 位运算 权限控制_java 位运算权限管控(转载)
  5. springboot如何使用log4j记录日志
  6. win7 找不到 计算机策略组,win7打开组策略报错:找不到资源string.Advanced_EnableSSL3Fallback...
  7. LeetCode.31 下一个排列
  8. mysql免安装出现1067_mysql,免安装,1067错误
  9. 背景图层和普通图层的区别_图层样式(一)—高级混合选项
  10. c语言数据交换的算法流程图,C语言冒泡排序算法浅析