首页 > 编程语言 >Java网络编程---基于TCP协议实现客户端服务端通信

Java网络编程---基于TCP协议实现客户端服务端通信

时间:2022-12-06 01:44:50浏览次数:48  
标签:Java socket java TCP --- new import 客户端

首先,对于TCP协议,我们要明确:

  TCP:传输控制协议

  TCP会尽自己所能,尽量将数据发送给对方;但并不能保证100%可以发送给对方

  TCP会在数据发送不到对方的情况下,会给应用层一个错误提示,告知用户发送失败
  TCP可以保证接收方(应用层)严格按照发送时的数据顺序接收
  TCP保证数据不会出现无意间的损坏(UDP 也做到这点)
  TCP尽可能地维护网络质量

客户端:

  1.明确服务器地址

  2.创建socket连接

  3.发送IO流

代码实现:

package test1;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.nio.charset.StandardCharsets;
import java.util.Scanner;

public class TcpClient {
    public static void main(String[] args) throws IOException {
        while (true){
            System.out.println("发送给服务器端的内容:");
            Scanner scanner = new Scanner(System.in);
            String context = scanner.nextLine();
            if("666".equals(context)){
                break;
            }
            Socket socket = new Socket("127.0.0.1",8080);
            OutputStream outputStream = socket.getOutputStream();

            outputStream.write(context.getBytes());
            InputStream inputStream = socket.getInputStream();
            byte[] bytes = new byte[1024];
            int len = inputStream.read(bytes);
            System.out.println("客户端接受到服务器端相应数据:" + new String(bytes,0,len));
            outputStream.close();
            socket.close();
        }
    }
}

服务端:

  1.需要一个明确的地址

  2.等待客户端连接过来

  3.读取客户端信息

代码实现:

package test1;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.nio.charset.StandardCharsets;
import java.util.UUID;

public class TcpServer {
    public static void main(String[] args) throws IOException {
        ServerSocket serverSocket = new ServerSocket(8080);
        System.out.println("服务器端启动!!!");
        while (true){
            Socket socket = serverSocket.accept();
            InputStream inputStream = socket.getInputStream();
            byte[] bytes = new byte[1024];
            int len = inputStream.read(bytes);
            System.out.println("服务器收到数据:" + new String(bytes,0,len));

            OutputStream outputStream = socket.getOutputStream();
            String resp = "已收到数据:" + UUID.randomUUID().toString();
            outputStream.write(resp.getBytes(StandardCharsets.UTF_8));
            inputStream.close();
            socket.close();
        }
    }
}

运行结果:

客户端:

 

 服务端:

 

 

 

标签:Java,socket,java,TCP,---,new,import,客户端
From: https://www.cnblogs.com/99kol/p/16954064.html

相关文章

  • React中的BUG记录——Error: Element type is invalid: expected a string (for built
    问题描述语法各个方面没有问题,报以下错误:Error:Elementtypeisinvalid:expectedastring(forbuilt-incomponents)oraclass/function(forcompositecomponents......
  • react-native 渐变组件 react-native-linear-gradient
    react-native渐变组件react-native-linear-gradient安装linkyarnaddreact-native-linear-gradientreact-nativelinkreact-native-linear-gradientlink......
  • react-native-picker 实现省市区 时间日期组件
    react-native-picker实现省市区时间日期组件github示例以及详细参数:https://github.com/beefe/react-native-picker  先安装linknpminstallreact-native-pi......
  • BLOG-3
    前言:在上一个月的课程学习中,我吸收掌握了很多具有拓展性、延申性的知识,其中包含类与对象的构造、组成,以及在封装、继承、多态三原则优化后的代码结构基础上,进行抽象类......
  • C语言第二课学习笔记--运算符,流程控制和函数
    <7>运算符1)分类:一些基本的运算符分类有:算术、关系、逻辑、赋值算术运算符有:+,-,*,/,%;    对于/被除数和除数都是int则结果是int,有一个是float结果就是float;对于%,被......
  • 攻防世界-fileinclude
    一道简单的文件包含题目,源代码如下 一、代码分析此题中关键代码为  分析此处代码可知,$lan的值是cookie中language所对应的值,当该值不为english时,会将$lan的值与.p......
  • react-native-modal-dropdown
    react-native-modal-dropdown1.0.2 • Public • Published ayearago Readme Explore BETA1Dependency32Dependents21Versionsreact-native-m......
  • React-native link命令的详细讲解
    1.使用React-nativelink的背景并不是所有的APP都需要使用全部的原生功能,包含支持全部特性的代码会增大应用的体积。但我们仍然希望能让你简单地根据自己的需求添加需要......
  • JavaSE复习day1
    JavaSE复习day1胡家伟1.代码格式注释单行注释:通常用于解释方法内某单行代码的作用。多行注释:通常用于解释一段代码的作用。文档注释:通常用于生成Java开发文档。......
  • Counting Elements - MaxCounters
    YouaregivenNcounters,initiallysetto0,andyouhavetwopossibleoperationsonthem:increase(X) −counterXisincreasedby1,maxcounter −all......