客户端代码:

  1. package com.bobohe.socket;
  2.  
  3. import java.io.*;
  4.  
  5. import java.net.*;
  6.  
  7. public class TalkClient {
  8.  
  9. public static void main(String args[]) {
  10.  
  11. try {
  12.  
  13. Socket socket = new Socket("127.0.0.1", 4700);
  14.  
  15. // 向本机的4700端口发出客户请求
  16.  
  17. BufferedReader sin = new BufferedReader(new InputStreamReader(
  18. System.in));
  19.  
  20. // 由系统标准输入设备构造BufferedReader对象
  21.  
  22. PrintWriter os = new PrintWriter(socket.getOutputStream());
  23.  
  24. // 由Socket对象得到输出流,并构造PrintWriter对象
  25.  
  26. BufferedReader is = new BufferedReader(new InputStreamReader(
  27. socket.getInputStream()));
  28.  
  29. // 由Socket对象得到输入流,并构造相应的BufferedReader对象
  30.  
  31. String readline;
  32.  
  33. readline = sin.readLine(); // 从系统标准输入读入一字符串
  34.  
  35. while (!readline.equals("bye")) {
  36.  
  37. // 若从标准输入读入的字符串为 "bye"则停止循环
  38.  
  39. os.println(readline);
  40.  
  41. // 将从系统标准输入读入的字符串输出到Server
  42.  
  43. os.flush();
  44.  
  45. // 刷新输出流,使Server马上收到该字符串
  46.  
  47. System.out.println("Client:" + readline);
  48.  
  49. // 在系统标准输出上打印读入的字符串
  50.  
  51. System.out.println("Server:" + is.readLine());
  52.  
  53. // 从Server读入一字符串,并打印到标准输出上
  54.  
  55. readline = sin.readLine(); // 从系统标准输入读入一字符串
  56.  
  57. } // 继续循环
  58.  
  59. os.close(); // 关闭Socket输出流
  60.  
  61. is.close(); // 关闭Socket输入流
  62.  
  63. socket.close(); // 关闭Socket
  64.  
  65. } catch (Exception e) {
  66.  
  67. System.out.println("Error" + e); // 出错,则打印出错信息
  68.  
  69. }
  70.  
  71. }
  72.  
  73. }

服务端代码:

  1. package com.bobohe.socket;
  2.  
  3. import java.io.*;
  4.  
  5. import java.net.*;
  6.  
  7. import java.applet.Applet;
  8.  
  9. public class TalkServer {
  10.  
  11. public static void main(String args[]) {
  12.  
  13. try {
  14.  
  15. ServerSocket server = null;
  16.  
  17. try {
  18.  
  19. server = new ServerSocket(4700);
  20.  
  21. // 创建一个ServerSocket在端口4700监听客户请求
  22.  
  23. } catch (Exception e) {
  24.  
  25. System.out.println("can not listen to:" + e);
  26.  
  27. // 出错,打印出错信息
  28.  
  29. }
  30.  
  31. Socket socket = null;
  32.  
  33. try {
  34.  
  35. socket = server.accept();
  36.  
  37. // 使用accept()阻塞等待客户请求,有客户
  38.  
  39. // 请求到来则产生一个Socket对象,并继续执行
  40.  
  41. } catch (Exception e) {
  42.  
  43. System.out.println("Error." + e);
  44.  
  45. // 出错,打印出错信息
  46.  
  47. }
  48.  
  49. String line;
  50.  
  51. BufferedReader is = new BufferedReader(new InputStreamReader(
  52. socket.getInputStream()));
  53.  
  54. // 由Socket对象得到输入流,并构造相应的BufferedReader对象
  55.  
  56. PrintWriter os = new PrintWriter(socket.getOutputStream());
  57.  
  58. // 由Socket对象得到输出流,并构造PrintWriter对象
  59.  
  60. BufferedReader sin = new BufferedReader(new InputStreamReader(
  61. System.in));
  62.  
  63. // 由系统标准输入设备构造BufferedReader对象
  64.  
  65. System.out.println("Client:" + is.readLine());
  66.  
  67. // 在标准输出上打印从客户端读入的字符串
  68.  
  69. line = sin.readLine();
  70.  
  71. // 从标准输入读入一字符串
  72.  
  73. while (!line.equals("bye")) {
  74.  
  75. // 如果该字符串为 "bye",则停止循环
  76.  
  77. os.println(line);
  78.  
  79. // 向客户端输出该字符串
  80.  
  81. os.flush();
  82.  
  83. // 刷新输出流,使Client马上收到该字符串
  84.  
  85. System.out.println("Server:" + line);
  86.  
  87. // 在系统标准输出上打印读入的字符串
  88.  
  89. System.out.println("Client:" + is.readLine());
  90.  
  91. // 从Client读入一字符串,并打印到标准输出上
  92.  
  93. line = sin.readLine();
  94.  
  95. // 从系统标准输入读入一字符串
  96.  
  97. } // 继续循环
  98.  
  99. os.close(); // 关闭Socket输出流
  100.  
  101. is.close(); // 关闭Socket输入流
  102.  
  103. socket.close(); // 关闭Socket
  104.  
  105. server.close(); // 关闭ServerSocket
  106.  
  107. } catch (Exception e) {
  108.  
  109. System.out.println("Error:" + e);
  110.  
  111. // 出错,打印出错信息
  112.  
  113. }
  114.  
  115. }
  116.  
  117. }

Socket通信的简单例子的更多相关文章

  1. AgileEAS.NET SOA 中间件平台.Net Socket通信框架-简单例子-实现简单的服务端客户端消息应答

    一.AgileEAS.NET SOA中间件Socket/Tcp框架介绍 在文章AgileEAS.NET SOA 中间件平台Socket/Tcp通信框架介绍一文之中我们对AgileEAS.NET SOA ...

  2. 16 Socket通信(简单例子)

      服务端代码: import java.io.*; import java.net.ServerSocket; import java.net.Socket; import java.util.Da ...

  3. 170411、java Socket通信的简单例子(UDP)

    服务端代码: package com.bobohe.socket; import java.io.*; import java.net.*; class UDPServer { public stat ...

  4. 170410、java Socket通信的简单例子(TCP)

    服务端代码: package com.bobohe.socket; import java.io.*; import java.net.*; import java.applet.Applet; pu ...

  5. [转] 3个学习Socket编程的简单例子:TCP Server/Client, Select

    以前都是采用ACE的编写网络应用,最近由于工作需要,需要直接只用socket接口编写CS的代码,重新学习这方面的知识,给出自己所用到的3个简单例子,都是拷贝别人的程序.如果你能完全理解这3个例子,估计 ...

  6. java socket编程开发简单例子 与 nio非阻塞通道

    基本socket编程 1.以下只是简单例子,没有用多线程处理,只能一发一收(由于scan.nextLine()线程会进入等待状态),使用时可以根据具体项目功能进行优化处理 2.以下代码使用了1.8新特 ...

  7. 基于TCP的socket通信过程及例子

    Socket也叫套接字,用来实现网络通讯,通过调用系统提供的API,可以和远程的机子传输数据.Socket有很多种协议,而这篇文章主要讨论TCP部分的内容,也就是说后面说的内容主要是指TCP Sock ...

  8. php socket通信的简单实现

    socket通信的原理在这里就不说了,它的用途还是比较广泛的,我们可以使用socket来做一个API接口出来,也可以使用socket来实现两个程序之间的通信,我们来研究一下在php里面如何实现sock ...

  9. 我看不下去鸟。。。。Java和C#的socket通信真的简单吗?

    这几天在博客园上看到好几个写Java和C#的socket通信的帖子.但是都为指出其中关键点. C# socket通信组件有很多,在vs 使用nuget搜索socket组件有很多类似的.本人使用的是自己 ...

随机推荐

  1. Annotation 使用备忘2

    title: Annotation 使用备忘 date: 2018-01-02 20:48:43 tags: [Annotation] categories: [Programming,Java] - ...

  2. nodejs 几篇有用的文章

    深入浅出Node.js(三):深入Node.js的模块机制 http://www.infoq.com/cn/articles/nodejs-module-mechanism Node.js简单介绍并实 ...

  3. [译文]c#扩展方法(Extension Method In C#)

    原文链接: https://www.codeproject.com/Tips/709310/Extension-Method-In-Csharp 介绍 扩展方法是C# 3.0引入的新特性.扩展方法使你 ...

  4. [ c++] cmake 编译时 undefined reference to `std::cout' 错误的解决方案

    cmake ..  和 make 之后,出现如下错误 Linking CXX executable ../../../bin/ModuleTest CMakeFiles/ModuleTest.dir/ ...

  5. Ipython使用

    目录 Ipython说明 Ipython使用 安装使用 TAB键自动补全 内省(?命令) 执行系统命令(!) 与操作系统交互 %run命令执行文件代码 %paste %cpaste命令执行剪贴板代码 ...

  6. iOS 开发中,关于xxx.xcodeproj 文件冲突的解决方案 (以后谁不会了,直接将连接给他)

    iOS 开发中,关于xxx.xcodeproj 文件冲突的解决方案 (一有冲突要手把手教一遍,太麻烦了,现在总结下,以后谁不会了,连接直接发他). 关于xxx.xcodeproj 文件冲突的话,是比较 ...

  7. C++:模板——函数模板1

    一.为什么使用函数模板 假设我们在程序中需要比较两个变量的大小,但变量的类型可能是int.float或者double,此时为了满足程序的要求我们可能会在程序中编写多个函数,如: //比较两个int型变 ...

  8. 1~n中1的和

    题目:给定一个十进制的正整数,写下从1开始,到N的所有整数,然后数一下其中出现“1”的个数: 要求:写一个函数f(n),返回1到n之间出现“1“的个数, 思路: 1.先判断这个数共多少位,假设为n位: ...

  9. 超实用 1 ArrayList 链表

    package ArrayList链表; import java.util.*; public class kk1 { /** * 作者:Mr.Fan * 功能:记住ArrayList链表 */ pu ...

  10. NABCD(校园包车)

    广州商学院包车 N(need) 各个高校包车需求量大,然而校园内包车信息太散乱,售票地点不确定,有些老师.学生特别是新生,甚至不知有校园包车这一回事, 随着信息网络的发展,为了给师生带来校园更多的方便 ...