1.客户端接受服务端的消息并打印:

客户端:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.Socket;public class Client {private static final String IP = "localhost";//服务器地址 private static final int PORT = 8000;//服务器端口号  public static void main(String[] args) {handler();}private static void handler() {//创建一个流套接字,连接到指定主机上的指定端口号Socket client = null;try {while(true){client = new Socket(IP, PORT);//取得输入流InputStream is = client.getInputStream();BufferedReader br = new BufferedReader(new InputStreamReader(is));//读取服务器端数据 System.out.println(br.readLine());br.close();is.close();}}catch (Exception e) {System.out.println("客户端异常:" + e.getMessage()); }finally{if(client != null){try {client.close();} catch (IOException e) {System.out.println("客户端异常:" + e.getMessage()); }}}}
}

服务端:

import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;public class Server {private static final int PORT = 8000;//监听的端口号public static void main(String[] args) {Server server = new Server();server.init();}private void init(){try {ServerSocket serverSocket = new ServerSocket(PORT);while(true){Socket client = serverSocket.accept();//一个客户端连接就开户一个线程处理new Thread(new HandlerThread(client)).start();}} catch (IOException e) {System.out.println("服务器异常:" + e.getMessage());}}private class HandlerThread implements Runnable{private Socket client;public HandlerThread(Socket client) {this.client = client;}@Overridepublic void run() {try {//取得输出流OutputStream os = client.getOutputStream();BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os));//输入要输出给客户端的内容Scanner sc = new Scanner(System.in);bw.write(sc.nextLine());bw.close();} catch (IOException e) {System.out.println("服务器异常:" + e.getMessage());}finally{if(client != null){try {client.close();} catch (IOException e) {client = null;System.out.println("服务器异常:" + e.getMessage());}}}}}
}

2.服务端接受客户端的消息并打印:

客户端:

import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.util.Scanner;public class Client {private static final String IP = "localhost";//服务器地址 private static final int PORT = 8000;//服务器端口号  public static void main(String[] args) {handler();}private static void handler() {//创建一个流套接字,连接到指定主机上的指定端口号Socket client = null;try {while(true){client = new Socket(IP, PORT);//取得输出流OutputStream os = client.getOutputStream();BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os));//输入要发送到服务端的消息Scanner sc = new Scanner(System.in);bw.write(sc.nextLine());bw.close();os.close();}}catch (Exception e) {System.out.println("客户端异常:" + e.getMessage()); }finally{if(client != null){try {client.close();} catch (IOException e) {System.out.println("客户端异常:" + e.getMessage()); }}}}
}

服务端:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;public class Server {private static final int PORT = 8000;//监听的端口号public static void main(String[] args) {Server server = new Server();server.init();}private void init(){try {ServerSocket serverSocket = new ServerSocket(PORT);while(true){Socket client = serverSocket.accept();//一个客户端连接就开户一个线程处理new Thread(new HandlerThread(client)).start();}} catch (IOException e) {System.out.println("服务器异常:" + e.getMessage());}}private class HandlerThread implements Runnable{private Socket client;public HandlerThread(Socket client) {this.client = client;}@Overridepublic void run() {try {//取得输入流InputStream is = client.getInputStream();BufferedReader bw = new BufferedReader(new InputStreamReader(is));//读取客户端发送来的数据 System.out.println(bw.readLine());bw.close();} catch (IOException e) {System.out.println("服务器异常:" + e.getMessage());}finally{if(client != null){try {client.close();} catch (IOException e) {client = null;System.out.println("服务器异常:" + e.getMessage());}}}}}
}

转载于:https://www.cnblogs.com/xinyuyuanm/archive/2013/04/03/2998628.html

Java--Socket客户端,服务端通信相关推荐

  1. 客户端/服务端软件概述

    文章目录 前言 一.客户端基本功能 1.解析服务器IP地址 2.解析服务器端口号 3.解析协议号 二.客户端实现 1.TCP客户端软件流程 2.UDP客户端软件流程 三.服务器软件设计 1.循环无连接 ...

  2. socket java 客户端_Java基于socket实现的客户端和服务端通信功能完整实例

    本文实例讲述了Java基于socket实现的客户端和服务端通信功能.分享给大家供大家参考,具体如下: 以下代码参考马士兵的聊天项目,先运行ChatServer.java实现端口监听,然后再运行Chat ...

  3. c++socket多个客户端通过不同端口与一个服务端通信_手写RPC,深入底层理解整个RPC通信...

    一.前言 RPC,远程过程调用,调用远程方法像调用本地方法一样.RPC交互分为客户端和服务端,客户端调用服务端方法,服务端接收数据并打印到控制台,并response响应给客户端. RPC和HTTP的联 ...

  4. SpringBoot(23) 集成socket.io服务端和客户端实现通信

    一.前言 websocket和socket.io区别? websocket 一种让客户端和服务器之间能进行双向实时通信的技术 使用时,虽然主流浏览器都已经支持,但仍然可能有不兼容的情况 适合用于cli ...

  5. 【Java】GUI界面聊天小程序(基于Socket的客户端服务端通信)

    基于Socket的客户端服务端通信--Java GUI界面小程序 Socket概念及其通信过程: Socket是TCP/IP中的基本概念,它负责将TCP/IP包发送到指定的IP地址.也可以看成是在两个 ...

  6. 浅议C#客户端和服务端通信的几种方法:Rest和GRPC和其他

    本文来自:https://michaelscodingspot.com/rest-vs-grpc-for-asp-net/ 浅议C#客户端和服务端通信的几种方法:Rest和GRPC 在C#客户端和C# ...

  7. android binder - 客户端(c++层) 调用 服务端(java层),服务端回调客户端 例子

    学习了: android binder - 客户端(java层) 调用 服务端(c++层) 例子 http://blog.csdn.net/ganyue803/article/details/4131 ...

  8. linux socket 阻塞服务端 非阻塞客户端,linux下异步RPC的阶段性总结-非阻塞SOCKET客户端...

    尽可能使用非阻塞socket int flags, s; flags = fcntl (fd, F_GETFL, 0); if (flags == -1){ close(fd); return -1; ...

  9. java xmpp协议_GitHub - zhengzhi530/xmpp: 基于Xmpp协议的即时通讯社交软件(客户端+服务端)...

    yyquan 开源一个自己去年写的基于Xmpp协议的即时通讯社交软件 (客户端+服务端) 本项目仅供参考,对于正在学习Xmpp以及javaweb后台的同学,可以看一下. 做这个项目纯属个人兴趣爱好,所 ...

  10. OSI七层模型以及TCP/UDP客户端/服务端程序实例

    OSI七层模型以及TCP/UDP客户端/服务端程序实例 一.前言 二.OSI简介 2.1 OSI概念 2.2 划分原则 2.3 OSI七层模型 2.4 模型举例 三.Linux下TCP/UDP程序开发 ...

最新文章

  1. Latex(一)公式自动编号与自动引用
  2. LeetCode10.正则表达式匹配 JavaScript
  3. sas table将缺失值计入百分比_SAS:通过数据块填充缺失值
  4. 浅析VS2010反汇编 VS 反汇编方法及常用汇编指令介绍 VS2015使用技巧 调试-反汇编 查看C语言代码对应的汇编代码...
  5. 分享自己作为一个程序员的找工作经历
  6. 华为云DevCloud为开发者提供高效智能的可信开发环境
  7. 新买win8更换win7的方法步骤
  8. lucene的简介及其工作方式的学习总结
  9. 三部委明确能源互联网建设10重点
  10. mssql 不能连接mysql,ASP连接MSSQL的错误:拒绝访问_MySQL
  11. 联想 yoga213笔记本,无线网卡无法打开-“硬件无线网络关闭无法打开 ‘问题解决方法。Intel 7260AC NGW NGFF接口网卡,蓝牙WIFI模块...
  12. 【转】傅里叶分析之掐死教程
  13. 服务端(Win server2012)+IIS管理器配置PHP服务器并部署网站讲解
  14. 微信公众号申请最新流程
  15. 土地利用分类详细教程——以高分一号影像为例(上)
  16. 十年,AMD“三剑合一”再出击
  17. 仿淘宝的详情页图片切换
  18. 利用matplotlib实现TMDB电影数据可视化
  19. layui登陆验证页面模板(滑块学习)
  20. 苹果mac电脑怎么设置默认浏览器

热门文章

  1. 读书笔记之 数据框操作与常用函数
  2. android 悬浮组件,Android 悬浮组件
  3. 触发器_PLCDCS组态中SR触发器介绍
  4. 95-38-150-Buffer-CompositeByteBuf
  5. 【ElasticSearch】ElasticSearch 6 IK 同义词 配置
  6. 【Elasticsearch】Elasticsearch 导入 导出 命令行工具
  7. 【Flink】Flink Invalid timestamp -1 Timestamp should always be none-negative or null
  8. 【MySQL】MySQL 8 新特性
  9. 60-124-340-源码-运行模式-Yarn-通过 YARN 的资源本地化技术减少 Flink 在 YARN 上的部署时间
  10. 网络:Server returned HTTP response code: 400(url中文)