public class ServerPlainTest { // 包内包外可见

public static void main(String[] args) {

try {

ServerSocket ss = new ServerSocket(8189);

System.out.println("the server has startuped, waiting for connections.");

while (true) { // accept multiple clients connection request.

Socket s = ss.accept();

System.out.println("a client has connected successfully.");

new Thread(new ReceiveHandler(s, Role.SERVER)).start();

new Thread(new SendHandler(s, Role.SERVER)).start();

}

} catch (Exception e) {

System.out.println(e);

}

}

}

public class MessageHandler { // 包内包外可见.

}

// receive msg.

class ReceiveHandler implements Runnable { // 包内可见性.

private Socket socket;

private Role role;

public ReceiveHandler(Socket socket, Role role) {

this.socket = socket;

this.role = role;

}

public void run() {

try {

System.out.println(role + " executes ReceiveHandler.run method.");

InputStream is = socket.getInputStream();

Scanner in = new Scanner(is);

// echo client input

boolean done = false;

while (!done && in.hasNextLine()) {

String line = in.nextLine();

System.out.println("from "+ role + ": " + line);

if (line.trim().equalsIgnoreCase("bye")) {

done = true;

}

}

// close relative instance.

in.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

// send msg.

class SendHandler implements Runnable { // 包内可见性.

private Socket socket;

private Role role;

public SendHandler(Socket socket, Role role) {

this.socket = socket;

this.role = role;

}

public void run() {

PrintWriter pw = null;

try {

System.out.println(role + " executes SendHandler.run method.");

Scanner s = new Scanner(System.in);

OutputStream os = socket.getOutputStream();

pw = new PrintWriter(os, true); // autoFlush=true.

if (role.equals(Role.SERVER)) {

pw.println("from server: you've connected with the server.");

}

while (s.hasNext()) {

String line = s.nextLine();

pw.println(line);

}

pw.println("connection closed successfully. bye!");

} catch (Exception e) {

e.printStackTrace();

}

}

}

【2】solution:在编译 ServerPlainTest.java 之前,编译 MessageHandler.java, 这样会附带编译 ReceiverHandler.java and SendHandler.java ;

java找不到符号类socket,编译报错+解决方法:错误: 找不到符号相关推荐

  1. Frambuffer_rd在Windows下的vivado 2020.1编译报错解决方法

    vivado2020.1 HLS生成的IP在Windows下报错 Frambuffer_rd在Windows下的vivado 2020.1编译报错解决方法 我的解决方法: 编译过程如下 之后重新对工程 ...

  2. 编译报错+解决方法:错误: 找不到符号

    [0]README 1)本文主要解决"错误,找不到符号" [1] console error info 1)error :  E:\bench-cluster\mybatis_in ...

  3. 【工具】更新arduino最新esp8266库离线安装包3.0.1、ESP32库离线安装包1.0.6,库编译报错解决方法...

    公众号关注 "DLGG创客DIY" 设为"星标",重磅干货,第一时间送达. 210806更新ESP32和ESP8266最新离线安装包下载地址.     因为各种 ...

  4. Visual Studio2022编译报错解决方法

    项目场景: 编译工程 问题描述 问题1: 编译出现E1696错误,如下图所示: 问题2: 解决方案1(问题1): 选择红圈的2个选项,点击右下角的"修改" 解决方案2(问题2): ...

  5. centos7 npm bulid编译报错解决

    centos npm bulid编译报错解决: (1)npm run build报错(npm ERR! code ELIFECYCLE)的解决办法 删除以前安装的依赖,删除package锁的版本: r ...

  6. 记录---ClassCastException: java.util.Date cannot be cast to java.sql.Date报错解决方法

    记录-ClassCastException: java.util.Date cannot be cast to java.sql.Date报错解决方法 先po代码: //1.读取配置文件中的基本信息I ...

  7. firefly AIO-RK3399J Linux SDK编译报错解决

    Firefly AIO-RK3399J Linux SDK编译报错解决 Zhang-Zhen 2020-09-30 22:01:04  收藏 分类专栏: RK3399工作记录 文章标签: linux  ...

  8. MSP430F435 c语言IAR编译软件报错解决方法笔记

    IAR编译软件报错解决方法 1.问题一:堆栈溢出出现警告.已进入主函数就开始报警堆栈溢出. 报错原因:在主函数中定义了大量的大数组,看门狗已经关闭,但仍未完成数据初始化,导致堆栈溢出. 解决方法:定义 ...

  9. Keil MDK 工程输入中文汉字编译报错解决办法

    Keil MDK 工程输入中文汉字编译报错解决办法 官方说明:https://www.keil.com/support/man/docs/armcc/armcc_chr1359124934197.ht ...

最新文章

  1. 在2003 server系统上部署DHCP服务器
  2. SAP WM模块常用T-code
  3. Git for Windows之推送本地版本库到远程仓库
  4. jzoj5097-[GDOI2017day1]取石子游戏【并查集,LCA】
  5. 【目标检测大集合】R-FCN、SSD、YOLO2、faster-rcnn和labelImg实验笔记
  6. tiledmap 图块属性_TiledMap地图使用
  7. python定时发送qq消息
  8. Maven(六)Maven传递性和依赖性
  9. mysql error trace_dede源码下data/mysql_error_trace.inc日志暴露后台地址漏洞修复
  10. 给SSD(固态硬盘)编程
  11. 数据标注员需要专业系统的学习么?
  12. QGIS二次开发:鼠标在地图上移动时,状态栏显示鼠标所在位置经纬度
  13. 无线调试——免除数据线的干扰
  14. [附源码]计算机毕业设计Python学生社团信息管理系统(程序+源码+LW文档)
  15. 为什么JS的语法很乱
  16. Nelder Mead算法推荐阅读博文
  17. python一些方法
  18. 区块链核心技术简单介绍
  19. 快手如何直播引流?快手直播推广方法分享
  20. 51单片机 | 独立按键实验

热门文章

  1. android activity之间传递对象,Android Activity之间的数据传递
  2. php获取悉尼时间,php在使用澳大利亚/悉尼时区时给出错误答案
  3. 网站显示不正常服务器怎么弄,你真的知道网站出现收录不正常的原因是什么吗...
  4. apache根据ip分发_腾讯广告进入“IP新融点”时代
  5. android 多个按钮响应,处理Android Recyclerview中的多个按钮单击并将响应存储在Array或ArrayList中...
  6. python如果想测试变量的类型、可以使用_python里测试变量类型用什么
  7. potplayer 多个进程_操作系统 | 进程同步与进程互斥
  8. html日期只显示7天,vue+elementui 只能选7天内的日期
  9. 3500 yuan to php,350 CNY to PHP Currency Converter - 人民币 菲律宾比索 汇率兑换
  10. qt int转换成qstring_「QT界面编程实例」创建颜色下拉框并改变窗体颜色(调色板)...