`

socket模拟客户端和服务端实时通信

阅读更多

利用java网络编程实现客户端跟服务器之前相互发送接受消息的功能,首先启动服务器,然后运行客户端,接着在客户端的控制台下,发送消息,然后切换到服务器控制台,即可看到客户端的消息,并对其进行回复,然后切换到服务端的客户端控制台,查看到效果,以达到相互通信发消息的功能,效果图如下:




 

首先新建一个java项目,并新建SocketService.java,代码如下:

 

package ch03;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class SocketService
{
    public static void main(String[] args) throws Exception
    {
        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("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);
            //出错,打印出错信息
        }
    }
}

 

然后,新建SocketClient.java,代码如下:

 

package ch03;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;

public class SocketClient
{
    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("Server:"+is.readLine());
                //从Server读入一字符串,并打印到标准输出上
                readline=sin.readLine(); //从系统标准输入读入一字符串
            } //继续循环
            os.close(); //关闭Socket输出流
            is.close(); //关闭Socket输入流
            socket.close(); //关闭Socket
        }catch(Exception e) {
            System.out.println("Error"+e); //出错,则打印出错信息
        }

    }
}

 

最后,先运行SocketService.java,开出通信的端口号等等,再运行SocketClient.java,去根据端口,ip等进行连接,然后就可以通信了,如上图所示,客户端发完一条后,服务端可以马上收到,并进行回复,然后客户端就会立刻收到服务端的回复,以此循环进行通信。

 

  • 大小: 27.1 KB
  • 大小: 34.7 KB
  • 大小: 34.9 KB
分享到:
评论

相关推荐

    Socket模拟客户端与服务端

    总结起来,"Socket模拟客户端与服务端"的实践涉及到TCP协议、Socket编程以及两端的交互逻辑。通过"WindowsApplication1"和"WindowsApplication2"这两个应用程序,我们可以学习到如何在Windows环境下实现TCP Socket...

    利用socket实现客户端服务器之间简单通信

    通过运行这两个脚本,你可以在本地模拟客户端和服务器的交互,理解TCP连接的建立和关闭过程。同时,这也是学习网络编程和Socket通信基础的好方式。实践中,你可以扩展这些基本示例,例如实现更复杂的协议或处理多...

    SSD8 EX2 Socket模拟客户端服务端

    SSD8 EX2可能包含了编写客户端和服务端代码的练习,以及相关的选择题,目的是检验对Socket编程的理解。这部分可能涉及到如何设置Socket参数,如何处理异常,如何实现数据的序列化与反序列化等。 六、2012303463-张...

    C#客户端和服务端通信

    在IT领域,C#是一种广泛使用的...总结来说,使用C#实现客户端和服务端通信涉及网络编程、文件操作、设备模拟、异步编程、安全性和错误处理等多个方面。理解这些概念和技术,是成为一名优秀的C#网络应用开发者的关键。

    java socket 实现手机客户端与服务端通信

    在这个特定的项目中,我们看到的是一个实现手机客户端与服务端通信的示例,这涉及到Android应用程序开发和Java网络编程的结合。下面我们将深入探讨相关知识点。 1. **Java Socket**: Java Socket 提供了低级别的...

    tcp客户端与服务端

    - 虽然TCP协议通常用于不同计算机之间的通信,但在此场景下,我们可以在同一台机器上模拟客户端和服务端。只需确保两个程序使用不同的端口号,因为同一台机器上的两个进程不能同时监听同一个端口。 - 在测试时,...

    Android使用webView和ServerSocket模拟客户端和服务端通讯

    本教程将探讨如何利用`webView`和`ServerSocket`在Android设备上模拟客户端和服务端的通讯。`webView`通常用于展示网页内容,而`ServerSocket`则在Java中用于创建服务器端套接字,允许我们监听并接收来自客户端的...

    C#利用Socket实现客户端之间直接通信

    设计程序,分别构建通信的两端:服务器端和客户端应用程序,套接字类型为面向连接的Socket,自己构建双方的应答模式,实现双方的数据的发送和接收(S发给C,C发给S)。 服务端程序能响应单个或任意多个客户端连接请求...

    安卓socket语语音通话服务端+客户端源码

    4. **Socket编程**: 使用Socket创建客户端和服务端的连接,发送和接收音频数据。在Android中,通常使用ServerSocket监听连接,Socket用于建立连接。 5. **多线程处理**: 为了保证语音通话的流畅性,需要在后台线程...

    仿微信聊天软件Socket实现(包含客户端和服务端)

    在IT行业中,网络通信是至关重要的一个领域,特别是在开发实时通信应用时,如微信这样的聊天软件。本项目涉及的核心知识点是使用...这个项目是一个很好的学习实践平台,有助于提升对网络编程和实时通信应用开发的理解。

    SOCKET客户端 服务端调试工具

    它简化了客户端和服务端的创建,提供了模拟各种请求的功能,以及可能的日志记录、多线程支持和错误调试机制,使得网络通信的调试工作变得更加高效和便捷。对于IT从业者来说,掌握这类工具的使用是提高工作效率的重要...

    Socket模拟服务器_Socket模拟服务器_

    在本文中,我们将深入探讨Socket模拟服务器的相关知识点,以及如何实现网络通讯数据的接收和处理。 首先,Socket是一种网络通信协议接口,它允许应用程序通过网络进行双向通信。在Java中,Socket类和ServerSocket类...

    java网络编程客户端和服务端

    在客户端和服务端之间进行数据传输时,我们可以通过`Socket`对象的`getInputStream()`和`getOutputStream()`方法获取输入流和输出流,从而实现双向通信。例如,发送数据到服务器: ```java OutputStream ...

    labview搭建的客户端和服务端

    在本示例中,“labview搭建的客户端和服务端”是一个使用LabVIEW实现的基本Socket通信系统,它模拟了客户端与服务器之间的交互,类似于日常使用的聊天软件如QQ或其他文件传输应用。 首先,我们需要理解Socket编程的...

    C#开发的网络调试助手包括TCP和UDP客户端和服务端

    它可以模拟客户端和服务端,方便地发送和接收数据,查看网络交互过程,有助于定位网络通信中的问题。C#的网络调试助手可能包含以下功能:设置和连接到不同的IP和端口,发送和接收数据,显示通信日志,错误处理,以及...

    C#仿QQ客户端+服务端+数据库文件.zip_C#仿QQ客户端+服务端+数据库文件_QQ_仿QQ服务端_数据库客户端

    通过这款软件,开发者可以深入理解即时通讯应用的工作原理,并且学习到如何在C#环境下构建服务端和客户端的通信机制。 首先,我们要了解C#语言本身。C#是微软公司推出的一种面向对象的编程语言,广泛应用于Windows...

    联通SGIP1.2接口Java版实现(客户端与服务端)

    本项目包括客户端和服务端两部分,确保了通信的双向性,实现了客户端发送请求和服务端响应的功能。 SGIP1.2接口是基于SGIP1.0的升级版本,主要优化了数据传输的效率和安全性,增加了更多的控制命令和功能,比如支持...

    Python实现简单的TCP套接字通信Demo【内含客户端和服务端,代码完整可直接使用】

    本示例将详细介绍如何使用Python实现一个简单的TCP套接字通信Demo,包括客户端和服务端的代码实现,以及它们如何进行交互。 首先,我们要理解TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信...

    VC++实现远程控制客户端与服务端源码

    远程控制的核心是通过网络传输指令和数据,使客户端能够实时看到服务端的屏幕,并对其进行操作。在VC++环境下,这通常涉及到TCP/IP协议的使用,因为TCP提供了一种可靠的、面向连接的数据传输方式,适合于需要稳定性...

    socket服务和客户端测试XML文件接收和发送

    6. **测试**:在“socketTest”这个项目中,很可能包含了服务端和客户端的测试代码,用于验证XML文件的发送和接收是否正常。测试可能包括模拟不同网络条件下的发送、接收,以及异常情况的处理。 总的来说,这个项目...

Global site tag (gtag.js) - Google Analytics