170410、java Socket通信的简单例子(TCP)
服务端代码:
package com.bobohe.socket; import java.io.*; import java.net.*; import java.applet.Applet; public class TalkServer { public static void main(String args[]) { try { ServerSocket server = null; try { server = new ServerSocket(4700); // 创建一个ServerSocket在端口4700监听客户请求 } catch (Exception e) { System.out.println("can not listen to:" + e); // 出错,打印出错信息 } Socket socket = null; try { socket = server.accept(); // 使用accept()阻塞等待客户请求,有客户 // 请求到来则产生一个Socket对象,并继续执行 } catch (Exception e) { System.out.println("Error." + e); // 出错,打印出错信息 } String line; BufferedReader is = new BufferedReader(new InputStreamReader(
socket.getInputStream())); // 由Socket对象得到输入流,并构造相应的BufferedReader对象 PrintWriter os = new PrintWriter(socket.getOutputStream()); // 由Socket对象得到输出流,并构造PrintWriter对象 BufferedReader sin = new BufferedReader(new InputStreamReader(
System.in)); // 由系统标准输入设备构造BufferedReader对象 System.out.println("Client:" + is.readLine()); // 在标准输出上打印从客户端读入的字符串 line = sin.readLine(); // 从标准输入读入一字符串 while (!line.equals("bye")) { // 如果该字符串为 "bye",则停止循环 os.println(line); // 向客户端输出该字符串 os.flush(); // 刷新输出流,使Client马上收到该字符串 System.out.println("Server:" + line); // 在系统标准输出上打印读入的字符串 System.out.println("Client:" + is.readLine()); // 从Client读入一字符串,并打印到标准输出上 line = sin.readLine(); // 从系统标准输入读入一字符串 } // 继续循环 os.close(); // 关闭Socket输出流 is.close(); // 关闭Socket输入流 socket.close(); // 关闭Socket server.close(); // 关闭ServerSocket } catch (Exception e) { System.out.println("Error:" + e); // 出错,打印出错信息 } } }
客户端代码:
package com.bobohe.socket; import java.io.*; import java.net.*; public class TalkClient { public static void main(String args[]) { try { Socket socket = new Socket("127.0.0.1", 4700); // 向本机的4700端口发出客户请求 BufferedReader sin = new BufferedReader(new InputStreamReader(
System.in)); // 由系统标准输入设备构造BufferedReader对象 PrintWriter os = new PrintWriter(socket.getOutputStream()); // 由Socket对象得到输出流,并构造PrintWriter对象 BufferedReader is = new BufferedReader(new InputStreamReader(
socket.getInputStream())); // 由Socket对象得到输入流,并构造相应的BufferedReader对象 String readline; readline = sin.readLine(); // 从系统标准输入读入一字符串 while (!readline.equals("bye")) { // 若从标准输入读入的字符串为 "bye"则停止循环 os.println(readline); // 将从系统标准输入读入的字符串输出到Server os.flush(); // 刷新输出流,使Server马上收到该字符串 System.out.println("Client:" + readline); // 在系统标准输出上打印读入的字符串 System.out.println("Server:" + is.readLine()); // 从Server读入一字符串,并打印到标准输出上 readline = sin.readLine(); // 从系统标准输入读入一字符串 } // 继续循环 os.close(); // 关闭Socket输出流 is.close(); // 关闭Socket输入流 socket.close(); // 关闭Socket } catch (Exception e) { System.out.println("Error" + e); // 出错,则打印出错信息 } } }
170410、java Socket通信的简单例子(TCP)的更多相关文章
- 170411、java Socket通信的简单例子(UDP)
服务端代码: package com.bobohe.socket; import java.io.*; import java.net.*; class UDPServer { public stat ...
- AgileEAS.NET SOA 中间件平台.Net Socket通信框架-简单例子-实现简单的服务端客户端消息应答
一.AgileEAS.NET SOA中间件Socket/Tcp框架介绍 在文章AgileEAS.NET SOA 中间件平台Socket/Tcp通信框架介绍一文之中我们对AgileEAS.NET SOA ...
- java socket编程开发简单例子 与 nio非阻塞通道
基本socket编程 1.以下只是简单例子,没有用多线程处理,只能一发一收(由于scan.nextLine()线程会进入等待状态),使用时可以根据具体项目功能进行优化处理 2.以下代码使用了1.8新特 ...
- 16 Socket通信(简单例子)
服务端代码: import java.io.*; import java.net.ServerSocket; import java.net.Socket; import java.util.Da ...
- Socket通信的简单例子
客户端代码: package com.bobohe.socket; import java.io.*; import java.net.*; public class TalkClient { pub ...
- 我看不下去鸟。。。。Java和C#的socket通信真的简单吗?
这几天在博客园上看到好几个写Java和C#的socket通信的帖子.但是都为指出其中关键点. C# socket通信组件有很多,在vs 使用nuget搜索socket组件有很多类似的.本人使用的是自己 ...
- Java Socket 通信实例 - 转载
基于Tcp协议的简单Socket通信实例(JAVA) 好久没写博客了,前段时间忙于做项目,耽误了些时间,今天开始继续写起~ 今天来讲下关于Socket通信的简单应用,关于什么是Socket以及一些 ...
- java socket通信-传输文件图片--传输图片
ClientTcpSend.java client发送类 package com.yjf.test; import java.io.DataOutputStream; import java.io ...
- java爬取网页内容 简单例子(2)——附jsoup的select用法详解
[背景] 在上一篇博文java爬取网页内容 简单例子(1)——使用正则表达式 里面,介绍了如何使用正则表达式去解析网页的内容,虽然该正则表达式比较通用,但繁琐,代码量多,现实中想要想出一条简单的正则表 ...
随机推荐
- unity, 用脚本创建mesh
创建一个空gameObject,添加Mesh Filter和Mesh Renderer两个component,再添加一个脚本createMeshScript: using UnityEngine;us ...
- 【HDU 2586】LCA模板
在一棵树上 求2个点的最短距离.那么首先利用LCA找到2个点的近期公共祖先 公式:ans = dis(x) + dis(y) - 2 * dis(lca(x,y)) 这里的dis(x)指的上x距离根节 ...
- 使用Secure Boot后,导致VMware无法启动虚拟机
最初安装vmware时就报错 Gtk-Message: Failed to load module "canberra-gtk-module": libcanberra-gtk- ...
- Atitit . 编程模型的变革总结
Atitit . 编程模型的变革总结 1. 面向对象与面向过程程序设计有如下不同: 1 1.1. 函数与数据是否分离.... 1 1.2. 以功能为中心;以数据为中心..... 1 1.3. 事件驱 ...
- U盘 格式化 ext3 ext4
[root@ok Desktop]# mkfs.ext3 /dev/sdc mke2fs 1.41.12 (17-May-2010) /dev/sdc is entire device, not ju ...
- 修改JQM的默认配置属性
从本文开始,使用 jQuery Mobile 与 HTML5 开发 Web App 系列将会进入第三部分——jQuery Mobile 事件与方法,这其中将会利用之前所讲述的 jQuery Mobil ...
- 使用 ChromaKey 滤镜进行抠图
简介 Nokia Imaging SDK 1.0 中新提供的 ChromaKey 滤镜是一个神奇的滤镜,它的基本原理就是把 一个指定范围值内的颜色变为透明或半透明,比如下面的 demo 演示的,看上 ...
- Hystrix的用法demo
1.引入依赖 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId> ...
- Spring整合redis,通过sentinel进行主从切换
实现功能描述: redis服务器进行Master-slaver-slaver-....主从配置,通过2台sentinel进行failOver故障转移,自动切换,采用该代码完全可以直接用于实际生产环境. ...
- 决Ubuntu使用`make menuconfig`配置Linux 内核时,出现缺少'ncurses-devel'库支持。
*** Unable to find the ncurses libraries or the *** required header files. *** 'make menuconfig' req ...