全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Java--Socket通信(客户端服务端双向)

新建两个工程,一个客户端,一个服务端,先启动服务端再启动客户端

两个工程的读写操作线程类基本上完全相同

服务端:

import java.io.BufferedReader; 
import java.io.DataInputStream; 
import java.io.DataOutputStream; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.net.ServerSocket; 
import java.net.Socket; 
 
public class Server { 
 
  public static final int PORT = 8000;//监听的端口号   
 
  public static void main(String[] args) {  
    Server server = new Server();  
    server.init();  
  }  
 
  public void init() {  
    ServerSocket serverSocket = null; 
    try {  
      serverSocket = new ServerSocket(PORT);  
      while (true) {  
        Socket client = serverSocket.accept();  
        //一个客户端连接就开户两个线程处理读写  
        new Thread(new ReadHandlerThread(client)).start();  
        new Thread(new WriteHandlerThread(client)).start();  
      }  
    } catch (Exception e) {  
      e.printStackTrace();  
    } finally{ 
      try { 
        if(serverSocket != null){ 
          serverSocket.close(); 
        } 
      } catch (IOException e) { 
        e.printStackTrace(); 
      } 
    } 
  }  
}  
 
/* 
 *处理读操作的线程  
 */ 
class ReadHandlerThread implements Runnable{ 
  private Socket client; 
 
  public ReadHandlerThread(Socket client) { 
    this.client = client; 
  } 
 
  @Override 
  public void run() { 
    DataInputStream dis = null; 
    try{ 
      while(true){ 
        //读取客户端数据  
        dis = new DataInputStream(client.getInputStream()); 
        String reciver = dis.readUTF(); 
        System.out.println("客户端发过来的内容:" + reciver);  
      } 
    }catch(Exception e){ 
      e.printStackTrace(); 
    }finally{ 
      try { 
        if(dis != null){ 
          dis.close(); 
        } 
        if(client != null){ 
          client = null; 
        } 
      } catch (IOException e) { 
        e.printStackTrace(); 
      } 
    } 
  } 
} 
 
/* 
 * 处理写操作的线程 
 */ 
class WriteHandlerThread implements Runnable{ 
  private Socket client; 
 
  public WriteHandlerThread(Socket client) { 
    this.client = client; 
  } 
 
  @Override 
  public void run() { 
    DataOutputStream dos = null; 
    BufferedReader br = null; 
    try{ 
      while(true){ 
        //向客户端回复信息  
        dos = new DataOutputStream(client.getOutputStream());  
        System.out.print("请输入:\t");  
        // 键盘录入  
        br = new BufferedReader(new InputStreamReader(System.in)); 
        String send = br.readLine();  
        //发送数据 
        dos.writeUTF(send);  
      } 
    }catch(Exception e){ 
      e.printStackTrace(); 
    }finally{ 
      try { 
        if(dos != null){ 
          dos.close(); 
        } 
        if(br != null){ 
          br.close(); 
        } 
        if(client != null){ 
          client = null; 
        } 
      } catch (IOException e) { 
        e.printStackTrace(); 
      } 
    } 
  } 
} 

客户端:

import java.io.BufferedReader; 
import java.io.DataInputStream; 
import java.io.DataOutputStream; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.net.Socket; 
 
public class Client { 
 
  public static final String IP = "localhost";//服务器地址  
  public static final int PORT = 8000;//服务器端口号  
 
  public static void main(String[] args) {  
    handler();  
  } 
 
  private static void handler(){ 
    try { 
      //实例化一个Socket,并指定服务器地址和端口 
      Socket client = new Socket(IP, PORT); 
      //开启两个线程,一个负责读,一个负责写 
      new Thread(new ReadHandlerThread(client)).start(); 
      new Thread(new WriteHandlerThread(client)).start(); 
    } catch (Exception e) { 
      e.printStackTrace(); 
    } 
  } 
}  
 
/* 
 *处理读操作的线程  
 */ 
class ReadHandlerThread implements Runnable{ 
  private Socket client; 
 
  public ReadHandlerThread(Socket client) { 
    this.client = client; 
  } 
 
  @Override 
  public void run() { 
    DataInputStream dis = null; 
    try { 
      while(true){ 
        //读取服务器端数据  
        dis = new DataInputStream(client.getInputStream()); 
        String receive = dis.readUTF();   
        System.out.println("服务器端返回过来的是: " + receive);  
      } 
    } catch (IOException e) { 
      e.printStackTrace(); 
    } finally{ 
      try { 
        if(dis != null){ 
          dis.close(); 
        } 
        if(client != null){ 
          client = null; 
        } 
      } catch (IOException e) { 
        e.printStackTrace(); 
      } 
    } 
  } 
} 
 
/* 
 * 处理写操作的线程 
 */ 
class WriteHandlerThread implements Runnable{ 
  private Socket client; 
 
  public WriteHandlerThread(Socket client) { 
    this.client = client; 
  } 
 
  @Override 
  public void run() { 
    DataOutputStream dos = null; 
    BufferedReader br = null; 
    try { 
      while(true){ 
        //取得输出流 
        dos = new DataOutputStream(client.getOutputStream()); 
        System.out.print("请输入: \t");  
        //键盘录入 
        br = new BufferedReader(new InputStreamReader(System.in)); 
        String send = br.readLine();  
        //发送数据 
        dos.writeUTF(send);  
      } 
    } catch (IOException e) { 
      e.printStackTrace(); 
    } finally{ 
      try{ 
        if(dos != null){ 
          dos.close(); 
        } 
        if(br != null){ 
          br.close(); 
        } 
        if(client != null){ 
          client = null; 
        } 
      }catch(Exception e){ 
        e.printStackTrace(); 
      } 
    } 
  } 
} 

 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# java  # socket双向通信  # java的socket通信  # java实现socket通信  # Java通过socket客户端保持连接服务端实现代码  # java客户端线上Apollo服务端的实现  # Java基于socket实现的客户端和服务端通信功能完整实例  # Java编程Socket实现多个客户端连接同一个服务端代码  # java实现socket客户端连接服务端  # 简单的java socket客户端和服务端示例  # java实现protocol传输的客户端和服务端的示例代码  # 客户端  # 服务端  # 请输入  # 的是  # 端口号  # 大家多多  # 完全相同  # final  # int  # PORT  # public  # Socket  # static  # Server 


相关文章: 如何在IIS中新建站点并解决端口绑定冲突?  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  零基础网站服务器架设实战:轻量应用与域名解析配置指南  唐山网站制作公司有哪些,唐山找工作哪个网站最靠谱?  建站上市公司网站建设方案与SEO优化服务定制指南  如何在香港免费服务器上快速搭建网站?  建站主机选择指南:服务器配置与SEO优化实战技巧  建站一年半SEO优化实战指南:核心词挖掘与长尾流量提升策略  如何通过服务器快速搭建网站?完整步骤解析  建站之星各版本价格是多少?  小说建站VPS选用指南:性能对比、配置优化与建站方案解析  企业微网站怎么做,公司网站和公众号有什么区别?  宝塔建站教程:一键部署配置流程与SEO优化实战指南  如何基于云服务器快速搭建网站及云盘系统?  青岛网站建设如何选择本地服务器?  网站海报制作教学视频教程,有什么免费的高清可商用图片网站,用于海报设计?  建站之星会员如何解锁更多建站功能?  已有域名和空间,如何快速搭建网站?  模具网站制作流程,如何找模具客户?  高端网站建设与定制开发一站式解决方案 中企动力  电脑免费海报制作网站推荐,招聘海报哪个网站多?  成都网站制作公司哪家好,四川省职工服务网是做什么用?  微信h5制作网站有哪些,免费微信H5页面制作工具?  C#如何使用XPathNavigator高效查询XML  建站之星多图banner生成与模板自定义指南  建站之星如何助力网站排名飙升?揭秘高效技巧  如何高效搭建专业期货交易平台网站?  建站VPS选购需注意哪些关键参数?  如何在阿里云服务器自主搭建网站?  怎么用手机制作网站链接,dw怎么把手机适应页面变成网页?  建站与域名管理如何高效结合?  图册素材网站设计制作软件,图册的导出方式有几种?  如何快速建站并高效导出源代码?  网站制作服务平台,有什么网站可以发布本地服务信息?  如何在Windows 2008云服务器安全搭建网站?  活动邀请函制作网站有哪些,活动邀请函文案?  装修招标网站设计制作流程,装修招标流程?  北京建设网站制作公司,北京古代建筑博物馆预约官网?  如何选择适合PHP云建站的开源框架?  logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?  建站之星五站合一营销型网站搭建攻略,流量入口全覆盖优化指南  建站之星微信建站一键生成小程序+多端营销系统  定制建站平台哪家好?企业官网搭建与快速建站方案推荐  公司网站建设制作费用,想建设一个属于自己的企业网站,该如何去做?  免费网站制作模板下载,除了易企秀之外还有什么H5平台可以制作H5长页面,最好是免费的?  建站主机是否等同于虚拟主机?  网站制作免费,什么网站能看正片电影?  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  如何在Mac上搭建Golang开发环境_使用Homebrew安装和管理Go版本  青浦网站制作公司有哪些,苹果官网发货地是哪里? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。