服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|JavaScript|易语言|

服务器之家 - 编程语言 - JAVA教程 - Java开发实现的Socket双向通信功能示例

Java开发实现的Socket双向通信功能示例

2021-03-17 14:15看看白云 JAVA教程

这篇文章主要介绍了Java开发实现的Socket双向通信功能,结合实例形式分析了java基于socket实现的服务器端与客户端双向通信相关操作技巧,需要的朋友可以参考下

本文实例讲述了Java开发实现的Socket双向通信功能。分享给大家供大家参考,具体如下:

服务端

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
public class Server_1 {
  public static void main(String[] args) {
    InputStreamReader isr;
    BufferedReader br;
    OutputStreamWriter osw;
    BufferedWriter bw;
    String str;
    Scanner in = new Scanner(System.in);
    try {
      ServerSocket server = new ServerSocket(4444);// 在本机的4444端口开放Server
      Socket socket = server.accept();// 只要产生连接,socket便可以代表所连接的那个物体,同时这个server.accept()只有产生了连接才会进行下一步操作。
      System.out.println(socket.getInetAddress());// 输出连接者的IP。
      System.out.println("建立了一个连接!");
      while (true) {
        isr = new InputStreamReader(socket.getInputStream());
        br = new BufferedReader(isr);
        System.out.println(socket.getInetAddress() + ":" + br.readLine());
        osw = new OutputStreamWriter(socket.getOutputStream());
        bw = new BufferedWriter(osw);
        System.out.print("回复:");
        str = in.nextLine();
        bw.write(str + "\n");
        bw.flush();
      }
    } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  }
}

客服端

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
public class Client_1 {
  public static void main(String[] args) {
    InputStreamReader isr;
    BufferedReader br;
    OutputStreamWriter osw;
    BufferedWriter bw;
    String str;
    Scanner in = new Scanner(System.in);
    try {
      Socket socket = new Socket("localhost", 4444);
//     System.out.println(socket.getInetAddress());// 输出连接者的IP。
      System.out.println("成功连接服务器");
      while (true) {
        osw = new OutputStreamWriter(socket.getOutputStream());
        bw = new BufferedWriter(osw);
        System.out.print("回复:");
        str = in.nextLine();
        bw.write(str + "\n");
        bw.flush();
        isr = new InputStreamReader(socket.getInputStream());
        br = new BufferedReader(isr);
        System.out.println(socket.getInetAddress() + ":" + br.readLine());
      }
    } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  }
}

希望本文所述对大家java程序设计有所帮助。

原文链接:http://blog.csdn.net/qq_14949289/article/details/49272171

延伸 · 阅读

精彩推荐
  • JAVA教程Java线程通信详解

    Java线程通信详解

    本篇文章主要介绍了Java线程通信问题,线程通信用来保证线程协调运行,有需要的朋友可以了解一下。...

    赵杰A-1241422020-06-28
  • JAVA教程老生常谈spring boot 1.5.4 日志管理(必看篇)

    老生常谈spring boot 1.5.4 日志管理(必看篇)

    下面小编就为大家带来一篇老生常谈spring boot 1.5.4 日志管理(必看篇)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看...

    Java之家2162020-11-19
  • JAVA教程MybatisPlus自定义Sql实现多表查询的示例

    MybatisPlus自定义Sql实现多表查询的示例

    这篇文章主要介绍了MybatisPlus自定义Sql实现多表查询的示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的...

    牟野9492020-08-25
  • JAVA教程一文搞懂JAVA 枚举(enum)

    一文搞懂JAVA 枚举(enum)

    这篇文章主要介绍了JAVA 枚举(enum)的相关资料,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下 ...

    菜鸟教程2952020-07-18
  • JAVA教程浅谈junit4单元测试高级用法

    浅谈junit4单元测试高级用法

    这篇文章主要介绍了浅谈junit4单元测试高级用法,小编觉得挺不错的,在这里分享给大家,需要的朋友可以参考下。...

    一人浅醉-9632021-01-15
  • JAVA教程java简单冒泡排序实例解析

    java简单冒泡排序实例解析

    这篇文章主要为大家详细介绍了java简单冒泡排序实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    五岁i3692020-12-14
  • JAVA教程Java反射简易教程

    Java反射简易教程

    这篇文章主要介绍了Java反射简易教程,小编觉得挺不错的,这里分享给大家,需要的朋友可以参考。...

    TCP/IP协议栈学习ing11152021-02-04
  • JAVA教程简述JAVA中堆内存与栈内存的区别

    简述JAVA中堆内存与栈内存的区别

    这篇文章主要介绍了JAVA中堆内存与栈内存的区别,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下...

    zsq_fengchen4552020-07-18