转自:http://developer.51cto.com/art/201202/317543.htm

现在做Java直接使用Socket的情况是越来越少,因为有很多的选择可选,比如说可以用spring,其中就可以支持很多种远程连接的操作,另外jboss的remoting也是不错的选择,还有Apache的Mina等等,但是在有些时候一些特殊情况仍然逃脱不了直接写Socket的情况,比如公司内部一些莫名其妙的游戏规则。

废话不说了,下面就看看如果自己写Socket应该怎么做吧。

首先是写一个Server类,这个类用来监听10000端口,并从这个端口接收消息然后输出,当收到“bye”时退出。

 1 package com.googlecode.garbagecan.test.socket.sample1;
 2
 3 import java.io.BufferedReader;
 4 import java.io.IOException;
 5 import java.io.InputStreamReader;
 6 import java.io.PrintWriter;
 7 import java.net.ServerSocket;
 8 import java.net.Socket;
 9
10 public class MyServer {
11     public static void main(String[] args) throws IOException {
12         ServerSocket server = new ServerSocket(10000);
13         Socket socket = server.accept();
14         BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
15         PrintWriter out = new PrintWriter(socket.getOutputStream());
16
17         while (true) {
18             String msg = in.readLine();
19             System.out.println(msg);
20             out.println("Server received " + msg);
21             out.flush();
22             if (msg.equals("bye")) {
23                 break;
24             }
25         }
26         socket.close();
27     }
28 } 

然后是一个Client类,这个类连接上面启动的Server类,然后接收任何用户输入,当遇到回车时发送字符串到Server上,当输入“bye”是退出。

 1 package com.googlecode.garbagecan.test.socket.sample1;
 2
 3 import java.io.BufferedReader;
 4 import java.io.InputStreamReader;
 5 import java.io.PrintWriter;
 6 import java.net.Socket;
 7
 8 public class MyClient {
 9     public static void main(String[] args) throws Exception {
10         Socket socket = new Socket("localhost", 10000);
11         BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
12         PrintWriter out = new PrintWriter(socket.getOutputStream());
13         BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
14
15         while (true) {
16             String msg = reader.readLine();
17             out.println(msg);
18             out.flush();
19             if (msg.equals("bye")) {
20                 break;
21             }
22             System.out.println(in.readLine());
23         }
24         socket.close();
25     }
26 } 

最后,首先运行MyServer类,然后MyClient类,然后在MyClient的控制台输入任意字符,可以看到当输入bye是server和client都会退出。

转载于:https://www.cnblogs.com/sharpest/p/10055437.html

Java Socket实战之一:单线程通信相关推荐

  1. [置顶] Java Socket实战之一 单线程通信

    本文地址:http://blog.csdn.net/kongxx/article/details/7259436 现在做Java直接使用Socket的情况是越来越少,因为有很多的选择可选,比如说可 ...

  2. Java Socket实战之六 使用NIO包实现Socket通信

    2019独角兽企业重金招聘Python工程师标准>>> 本文地址:http://blog.csdn.net/kongxx/article/details/7288896 Java S ...

  3. Java Socket实战之四 传输压缩对象

    2019独角兽企业重金招聘Python工程师标准>>> 本文地址:http://blog.csdn.net/kongxx/article/details/7259834 Java S ...

  4. [转载]Java Socket实战之二 多线程通信

    上一篇文章说到怎样写一个最简单的Java Socket通信,但是在上一篇文章中的例子有一个问题就是Server只能接受一个Client请求,当第一个Client连接后就占据了这个位置,后 续Clien ...

  5. Java Socket实战之三:传输对象

    转自:https://i.cnblogs.com/EditPosts.aspx?opt=1 前面两篇文章介绍了怎样建立Java Socket通信,这一篇说一下怎样使用Java Socket来传输对象. ...

  6. Java Socket实战之五:使用加密协议传输对象

    转自:http://developer.51cto.com/art/201202/317547.htm 前面几篇博文提到了Socket中一些常用的用法,但是对于一些有安全要求的应用就需要加密传输的数据 ...

  7. (java)socket全双工长连接通信实例

    (借鉴备忘)直接上代码: client: import java.io.InputStreamReader; import java.io.OutputStreamWriter; import jav ...

  8. java socket同步_Java socket客户端与服务端同步通信实例

    工作中没涉及有关JAVA SOCKET编程的实际经历,但理论大概了解.想正明一下自已的对JAVA SOCKET理解写个通信TEST,通过TEST验证了基本与理论相近.下面是TEST SRC CODE ...

  9. java socket简,javasocket简单示例

    简单Socket测试_计算机软件及应用_IT/计算机_专业资料.简单的聊天小测试 服务端 importjava.io.DataInputStream; importjava.io.DataOutput ...

最新文章

  1. 机器学习+优化问题的种类、如何优化、凸优化、非凸优化、对偶问题、KKT条件
  2. openresty url重写
  3. 网站颜色搭配的好网站。
  4. jQuery中排除指定元素,同时选择剩下的所有元素
  5. 洛谷 P1111 修复公路(最小生成树)
  6. 嵌入式linux实时化技术,嵌入式Linux实时化技术
  7. 如何在云服务器上安装vim(bash: vim :command not found)
  8. 图论--双连通E-DCC缩点模板
  9. Python isnumeric()方法
  10. Laravel初探——安装
  11. a6gpp php,内行人才知道的古董级玛莎拉蒂A6G 2000
  12. andriod环境搭建
  13. Unity3D 学习教程 14 C# 旋转镜头
  14. C#/ASP.NET MVC微信公众号接口开发之从零开发(三)回复消息 (附源码)
  15. c语言程序漏洞分析,C语言源程序的缓冲区溢出漏洞分析及解决方案.pdf
  16. 【matplotlib教程】绘图样式,文本线型、轴刻度
  17. 方舟大洋洲服务器稳定嘛,方舟生存进化最新版182.0更新内容翻译一览
  18. 享有盛誉的PHP高级教程
  19. MATLAB特殊矩阵的构造
  20. 【统计学】参数估计、点估计、区间估计、置信区间

热门文章

  1. 使用C#.NET列举组合数前N项和
  2. CLR Profiler 性能分析工具 (转)
  3. Linux下配置SSL (转)
  4. CentOS 6.x使用yum快速安装MySQL 5.5
  5. 微软CEO致雅虎董事会的最后通牒信
  6. 虚拟主播上线:多模态将改变人机交互的未来
  7. redis安全与管理
  8. 2014年百度之星程序设计大赛 - 初赛(第二轮)Chess
  9. [Head First设计模式]山西面馆中的设计模式——装饰者模式
  10. Struts2动态方法调用