TCP通信的客户端代码实现

package com.yang.Test.ServerStudy;

import java.io.*;
import java.net.Socket; /**
* TCP通信的客户端:向服务器发送链接请求,给服务器发送数据,解决服务器的回写的数据
* 表示客户端的类:
* java.net.Socket:此类实现了客户端套接字(也可以就叫“套接字”。套接字是两台机器间通信的端点)。
* 套接字:包含了IP地址和端口号的网络单位
*
* 构造方法:
* Socket(String host, int port);创建一个流套接字并将其链接到指定主机上的指定端口号
* 参数:
* String host:服务器主机的名称/服务器的IP地址
* int port:服务器的端口号
*
* 成员方法:
* OutputStream getOutputStream();返回此套接字的输出流
* InputStream getInputStream();返回次套接字的输入流
* void close();关闭此套接字
*
* 实现步骤:
* 1.创建一个客户端对象Socket,构造方法绑定服务器的IP地址和端口号
* 2.使用Socket对象中的方法getOutputStream()获取网络字节输出流OutputStream对象
* 3.使用网络字节OutputStream()对象中的方法write,给服务器发送数据
* 4.使用Socket中的方法getInputStream()获取网络字节输入流InputStream对象
* 5.使用网络字节输入流InputStream对象中的方法read,读取服务器会写的数据
* 6.释放资源(Socket)
*
* 注意:
* 1.客户端和服务端进行交互,必须使用Socket中提供的网络流,不能使用自己创建的流对象
* 2.当我们创建客户端对象Socket的时候,就会去请求服务器和服务器经过3此握手建立连接通路
* 这是如果服务器没有启动,那么就会抛出异常
* 如果服务器已经启动,那么就可以进行交互了
*
*/
public class TCPStudyClient {
public static void main(String[] args) throws IOException {
//1.创建一个客户端对象Socket,构造方法绑定服务器的IP地址和端口号
Socket socket = new Socket("127.0.0.1",1234);
//2.使用Socket对象中的方法getOutputStream()获取网络字节输出流OutputStream对象
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
//3.使用网络字节OutputStream()对象中的方法write,给服务器发送数据
bw.write("你好服务器");
//4.使用Socket中的方法getInputStream()获取网络字节输入流InputStream对象
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
//5.使用网络字节输入流InputStream对象中的方法read,读取服务器会写的数据
String readLine = br.readLine();
System.out.println("接受->"+readLine);
//6.释放资源(Socket)
socket.close();
}
}

TCP通信的服务器代码实现

package com.yang.Test.ServerStudy;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket; /**
* TCP通信的服务器端:接受客户端的请求,读取客户端发送的数据,给客户端会写数据
* 表示服务器的类:
* java.net.ServerSocket:此类实现服务端套接字
*
* 构造方法:
* ServerSocket(int port);创建绑定到特定的端口的服务器套接字
*
* 服务器必须明确一件事情,必须知道哪个客户端请求的服务器
* 所以可以使用accrpt方法获取请求的客户端对象Socket
* 成员方法:
* Socket accept()监听并接受到此台阶自的链接
*服务器的实现步骤:
* 1.创建服务器ServerSocket对象和系统要指定的端口号
* 2.使用ServerSocket对象中的方法accept获取大炮请求的客户端对象Socket
* 3.使用Socket对象中的方法getInputStream获取网络字节输入流InputStream对象
* 4.使用网络季节输入流InputStream对象中的方法read读取客户端发送的数据
* 5.使用Socket对象中的方法getOutputStream获取网络字节输出流OutputStream对象
* 6.使用网络字节输出流OutputStream对象中的方法write给客户端回写数据
* 7.释放资源(Socket,ServerSocket)
*/
public class TCPStudyServer {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = new ServerSocket(1234);
Socket socket = serverSocket.accept(); BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); String readLine = br.readLine();
System.out.println("客户端发送来的数据:"+readLine); bw.write("好的谢谢你");
bw.flush();
br.close();
bw.close();
socket.close();
serverSocket.close();
}
}

运行结果:

服务端:



客户端:

TCP通信的客户端代码实现和TCP通信的服务器代码实现的更多相关文章

  1. 分享下使用 svn,测试服务器代码自动更新、线上服务器代码手动更新的配置经验

    分享下使用 svn,测试服务器代码自动更新.线上服务器代码手动更新的配置经验 利用SVN的POST-COMMIT钩子自动部署代码 Linux SVN 命令详解 Linux SVN 命令详解2 使用sv ...

  2. 牛客网Java刷题知识点之TCP、UDP、TCP和UDP的区别、socket、TCP编程的客户端一般步骤、TCP编程的服务器端一般步骤、UDP编程的客户端一般步骤、UDP编程的服务器端一般步骤

    福利 => 每天都推送 欢迎大家,关注微信扫码并加入我的4个微信公众号:   大数据躺过的坑      Java从入门到架构师      人工智能躺过的坑         Java全栈大联盟   ...

  3. 网络编程之Socket的TCP协议实现客户端与客户端之间的通信

    我认为当你学完某个知识点后,最好是做一个实实在在的小案例.这样才能更好对知识的运用与掌握 如果你看了我前两篇关于socket通信原理的入门文章.我相信对于做出我这个小案列是完全没有问题的!! 既然是小 ...

  4. linux epoll机制对TCP 客户端和服务端的监听C代码通用框架实现

    1 TCP简介 tcp是一种基于流的应用层协议,其“可靠的数据传输”实现的原理就是,“拥塞控制”的滑动窗口机制,该机制包含的算法主要有“慢启动”,“拥塞避免”,“快速重传”. 2 TCP socket ...

  5. Java实现TCP之Echo客户端和服务端

    Java实现TCP之Echo客户端和服务端 代码内容 采用TCP协议编写服务器端代码(端口任意) 编写客户机的代码访问该端口 客户机按行输入 服务器将收到的字符流和接收到的时间输出在服务器consol ...

  6. 网络编程TCP/IP实现客户端与客户端聊天

    一.TCP/IP协议 既然是网络编程,涉及几个系统之间的交互,那么首先要考虑的是如何准确的定位到网络上的一台或几台主机,另一个是如何进行可靠高效的数据传输.这里就要使用到TCP/IP协议. TCP/I ...

  7. SSL握手通信详解及linux下c/c++ SSL Socket代码举例(另附SSL双向认证客户端代码)

    SSL握手通信详解及linux下c/c++ SSL Socket代码举例(另附SSL双向认证客户端代码) 摘自: https://blog.csdn.net/sjin_1314/article/det ...

  8. Android 进阶12:进程通信之 Socket (顺便回顾 TCP UDP)

    不要害怕困难,这是你进步的机会! 读完本文你将了解: OSI 七层网络模型 TCPIP 四层模型 TCP 协议 TCP 的三次握手 TCP 的四次挥手 UDP 协议 Socket 简介 Socket ...

  9. 【TCP/IP网络编程】:04基于TCP的服务器端/客户端

    摘要:结合前面所讲述的知识,本篇文章主要介绍了简单服务器端和客户端实现的框架流程及相关函数接口. 理解TCP和UDP 根据数据传输方式的不同,基于网络协议的套接字一般分为TCP套接字和UDP套接字(本 ...

随机推荐

  1. 推荐一款数据mock框架,无需任何依赖,贼牛逼

    fox-mock 是基于Java Agent实现的自测,联调Mock利器.能解决你的这些问题: 开发过程中,依赖了下游多个接口,想跑个单测都必须得等下游把服务部署好 联调过程中,下游某个接口出问题,阻 ...

  2. 好客租房44-react组件基础综合案例-5发表评论-1

    发表评论 1给按钮绑定点击事件 2在事件处理程序中 通过state获取评论信息 3将评论信息添加到state中 并调用setState()方法更新数据 //导入react import React f ...

  3. Windows环境下启动Redis报错:Could not create server TCP listening socket 127.0.0.1:6379: bind: 操作成功完成。(已解决)

    问题描述: 今天在windows环境下启动Redis时启动失败报错: 解决方案: ①运行命令:redis-cli.exe ②退出Redis ③运行命令:redis-server.exe redis.w ...

  4. 基于SqlSugar的开发框架循序渐进介绍(5)-- 在服务层使用接口注入方式实现IOC控制反转

    在前面随笔,我们介绍过这个基于SqlSugar的开发框架,我们区分Interface.Modal.Service三个目录来放置不同的内容,其中Modal是SqlSugar的映射实体,Interface ...

  5. [BZOJ5449] 序列

    题目链接:序列 Description 给定一个\(1\)~\(n\)的排列x,每次你可以将 \(x_1, x_2, ..., x_i\) 翻转. 你需要求出将序列变为升序的最小操作次数. 多组数据. ...

  6. 队列的java实现

    今天老师提出一个问题,就是如何用java实现队列呢?我在网上找了许多资料,发现java也是可以很轻松的实现队列. 如下代码: package com; import java.util.Collect ...

  7. 【原创】渗透神器CoblatStrike实践(1)

    渗透神器CoblatStrike实践(1) 前言 正常的渗透测试: ​ 寻找漏洞,利用漏洞,拿到一定的权限 后渗透(CS为代表的): ​ 提升权限,内网渗透,权限维持 工具地址(非官方取到后门多,建议 ...

  8. java中关于@override注解的使用

    @Override是伪代码,表示重写,作用有:1.可以当注释用,方便阅读:2.编译器可以给你验证@Override下面的方法名是否是你父类中所有的,如果没有则报错.例如:如果想重写父类的方法,比如to ...

  9. 支付宝开放平台--网页&移动应用(一)

    前提是先在支付宝上签约自己需要的支付宝功能,然后支付宝开放平台才能设置你需要的功能 一:支付宝开放平台登录 登录进入支付宝开放平台 二:根据自己的需求创建应用(我是用的网页&移动应用) 三:点 ...

  10. 微前端(qiankun)主应用共享React组件

    前言 最近需要重构一个老项目,定的方案用微前端去改造.主应用是老的项目,微应用是新的项目,由于重构时间比较紧张,子应用还需要使用父应用的一些组件.过程中遇到一些问题,记录一下. 方案 我们知道qian ...