Java实现TCP客户端和服务器端相互通信

这篇具有很好参考价值的文章主要介绍了Java实现TCP客户端和服务器端相互通信。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

解决TCP客户端和服务器端通信读不到数据的问题

 解决:

服务器端和客户端读完后加上client.shutdownInput();

服务器端和客户端写完后加上client.shutdownOutput();

服务器端代码:

public class TCPTestServer2 {
    public static void main(String[] args) throws IOException {

        System.out.println("---------------服务器--------------");
        ServerSocket server = new ServerSocket(9999);

        Socket client = server.accept();
        System.out.println("有一个用户连接。。。。。。。");

        InputStream is = client.getInputStream();

        byte[] msg = is.readAllBytes();

        System.out.println(new String(msg)); 

        is.close();
        client.close();
        server.close();

    }

}

客户端代码:

public class TCPTestClient2 {
    public static void main(String[] args) throws IOException {
        System.out.println("-------------客户端------------");

        Socket client = new Socket("127.0.0.1", 9999);

        Scanner sc = new Scanner(System.in);

        byte[] msg = sc.nextLine().getBytes();
        OutputStream os = client.getOutputStream();

        os.write(msg);

        os.flush();
        os.close();
        client.close();

    }
}

运行服务器端再运行客户端,在客户端中输入要发送的信息,回车

java tcp客户端,java,tcp/ip,服务器

服务器收到信息,over

java tcp客户端,java,tcp/ip,服务器

 然后!!!!!!!!!!!!!!!

想让服务器端回信息,结果翻车了。。。。。。

翻车全过程↓

客户端代码:

加了一个

        InputStream is = client.getInputStream();
        System.out.println(new String(is.readAllBytes()));

用来读服务器端发过来的信息

public class TCPTestClient2 {
    public static void main(String[] args) throws IOException {
        System.out.println("-------------客户端------------");

        Socket client = new Socket("127.0.0.1", 9999);

        Scanner sc = new Scanner(System.in);

        byte[] msg = sc.nextLine().getBytes();
        OutputStream os = client.getOutputStream();

        os.write(msg);

        InputStream is = client.getInputStream();
        System.out.println(new String(is.readAllBytes()));

        is.close();
        os.flush();
        os.close();
        client.close();

    }
}

服务器端:

只是加了个输出流

public class TCPTestServer2 {
    public static void main(String[] args) throws IOException {

        System.out.println("---------------服务器--------------");
        ServerSocket server = new ServerSocket(9999);

        Socket client = server.accept();
        System.out.println("有一个用户连接。。。。。。。");

        InputStream is = client.getInputStream();
        OutputStream os = client.getOutputStream();

        byte[] msg = is.readAllBytes();

        System.out.println(new String(msg));


        Scanner sc = new Scanner(System.in);

        byte[] msg2 = sc.nextLine().getBytes();

        os.write(msg2);

        os.flush();
        os.close();
        is.close();
        client.close();
        server.close();

    }

}

运行,程序未停止运行且服务器端也没有输出,客户端发过来的消息

也就是System.out.println(new String(msg));没执行到

package homework0526.login1;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;

public class TCPTestServer2 {
    public static void main(String[] args) throws IOException {

        System.out.println("---------------服务器--------------");
        ServerSocket server = new ServerSocket(9999);

        Socket client = server.accept();
        System.out.println("有一个用户连接。。。。。。。");

        InputStream is = client.getInputStream();
        OutputStream os = client.getOutputStream();

        byte[] msg = is.readAllBytes();
        client.shutdownInput();

        String s = new String(msg);

        System.out.println(s);


        Scanner sc = new Scanner(System.in);

        byte[] msg2 = sc.nextLine().getBytes();

        os.write(msg2);
        client.shutdownOutput();


        os.flush();
        os.close();
        is.close();
        client.close();
        server.close();

    }

}

java tcp客户端,java,tcp/ip,服务器

 java tcp客户端,java,tcp/ip,服务器

应该也许的原因:

java tcp客户端,java,tcp/ip,服务器

 解决:

服务器端和客户端读完后加上client.shutdownInput();

服务器端和客户端写完后加上client.shutdownOutput();

服务器端:

public class TCPTestServer2 {
    public static void main(String[] args) throws IOException {

        System.out.println("---------------服务器--------------");
        ServerSocket server = new ServerSocket(9999);

        Socket client = server.accept();
        System.out.println("有一个用户连接。。。。。。。");

        InputStream is = client.getInputStream();
        OutputStream os = client.getOutputStream();

        byte[] msg = is.readAllBytes();
        client.shutdownInput();

        String s = new String(msg);

        System.out.println(s);

        Scanner sc = new Scanner(System.in);

        byte[] msg2 = sc.nextLine().getBytes();

        os.write(msg2);
        client.shutdownOutput();


        os.flush();
        os.close();
        is.close();
        client.close();
        server.close();

    }

}

客户端:

package homework0526.login1;

import java.io.*;
import java.net.Socket;
import java.util.Scanner;

public class TCPTestClient2 {
    public static void main(String[] args) throws IOException {

        while (true) {
            System.out.println("-------------客户端------------");

            Socket client = new Socket("127.0.0.1", 9999);

            Scanner sc = new Scanner(System.in);

            byte[] msg = sc.nextLine().getBytes();
            OutputStream os = client.getOutputStream();

            os.write(msg);
            client.shutdownOutput();


            InputStream is = client.getInputStream();
            System.out.println(new String(is.readAllBytes()));
            client.shutdownInput();


            is.close();
            os.flush();
            os.close();
            client.close();
        }

    }
}
 

java tcp客户端,java,tcp/ip,服务器文章来源地址https://www.toymoban.com/news/detail-720507.html

到了这里,关于Java实现TCP客户端和服务器端相互通信的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • QT实现TCP通信(服务器与客户端搭建)

    创建一个QTcpServer类对象,该类对象就是一个服务器 调用listen函数将该对象设置为被动监听状态,监听时,可以监听指定的ip地址,也可以监听所有主机地址,可以通过指定端口号,也可以让服务器自动选择 当有客户端发来连接请求时,该服务器会自动发射一个newConnection信号

    2024年02月09日
    浏览(38)
  • 【网络编程】实现UDP/TCP客户端、服务器

    需要云服务器等云产品来学习Linux的同学可以移步/--腾讯云--/--阿里云--/--华为云--/官网,轻量型云服务器低至112元/年,新用户首次下单享超低折扣。   目录 一、UDP 1、Linux客户端、服务器 1.1udpServer.hpp 1.2udpServer.cc 1.3udpClient.hpp 1.4udpClient.cc 1.5onlineUser.hpp 2、Windows客户端 二、T

    2024年02月06日
    浏览(42)
  • 【网络原理】使用Java基于TCP搭建简单客户端与服务器通信

    TCP服务器与客户端的搭建需要借助以下API ServerSocket 是创建TCP服务端Socket的API。 ServerSocket 构造方法 : 方法签名 方法说明 ServerSocket(int port) 创建一个服务端流套接字Socket,并绑定到指定端口 ServerSocket 方法: 方法签名 方法说明 Socket accept() 开始监听指定端口(创建时绑定的端

    2024年03月12日
    浏览(66)
  • C#实现简单TCP服务器和客户端网络编程

    在C#中进行网络编程涉及许多类和命名空间,用于创建和管理网络连接、传输数据等。下面是一些主要涉及的类和命名空间: System.Net 命名空间: 这个命名空间提供了大部分网络编程所需的类,包括: IPAddress :用于表示IP地址。 IPEndPoint :表示IP地址和端口号的组合。 Socke

    2024年02月11日
    浏览(44)
  • Socket网络编程(TCP/IP)实现服务器/客户端通信。

    一.前言 回顾之前进程间通信(无名管道,有名管道,消息队列,共享内存,信号,信号量),都是在同一主机由内核来完成的通信。 那不同主机间该怎么通信呢? 可以使用Socket编程来实现。 Socket编程可以通过网络来实现实现不同主机之间的通讯。 二.Socket编程的网络模型如

    2024年02月08日
    浏览(64)
  • 【网络编程】——基于TCP协议实现回显服务器及客户端

    个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【网络编程】【Java系列】 本专栏旨在分享学习网络编程的一点学习心得,欢迎大家在评论区交流讨论💌 TCP提供的API主要有两个类 Socket ( 既会给服务器使用也会给客

    2024年02月03日
    浏览(46)
  • SpringBoot中使用Netty实现TCP通讯,服务器主动向客户端发送数据

    Springboot项目的web服务后台,web服务运行在9100端口。 后台使用netty实现了TCP服务,运行在8000端口。 启动截图如下: 启动类修改: 服务器查看当前所有连接的客户端  服务器获取到所有客户单的ip地址及端口号后,即可通过其给指定客户端发送数据  

    2024年02月11日
    浏览(32)
  • 多进程并发TCP服务器模型(含客户端)(网络编程 C语言实现)

    摘要 :大家都知道不同pc间的通信需要用到套接字sockte来实现,但是服务器一次只能收到一个客户端发来的消息,所以为了能让服务器可以接收多个客户端的连接与消息的传递,我们就引入了多进程并发这样一个概念。听名字就可以知道--需要用到进程,当然也有多线程并发

    2024年02月17日
    浏览(38)
  • 网络通信(13)-C#TCP服务器和客户端同时在一个进程实现的实例

    有时项目需求中需要服务器和客户端同时在一个进程实现,一边需要现场接收多个客户端的数据,一边需要将数据汇总后发送给远程服务器。下面通过实例演示此项需求。 C#TCP服务器和客户端同时在一个进程实现的实例如下: 界面设计 UI文件代码

    2024年01月22日
    浏览(47)
  • S7-200SMART 实现MODBUS TCP通信的具体方法示例(客户端读写+服务器响应)

    前面和大家介绍了MODBUS TCP的基本使用方法,具体可参考以下链接中的内容: S7-200SMART实现MODBUS TCP通信(客户端+服务器)的具体方法和步骤示例 本次继续和大家分享S7-200SMART 中实现MODBUS TCP通信的具体方法 , 任务要求:

    2024年02月16日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包