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. HCNP Routing&Switching之RSTP

    前文我们了解了vlan优化,vlan聚合技术super vlan相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16208997.html:今天我们来聊 ...

  2. Jmeter接口测试流程详解(中科软测认证中心)

    1.jmeter简介 Jmeter是由Apache公司开发的java开源项目,所以想要使用它必须基于java环境才可以: Jmeter采用多线程,允许通过多个线程并发取样或通过独立的线程对不同的功能同 ...

  3. 一文讲透为Power Automate for Desktop (PAD) 实现自定义模块 - 附完整代码

    概述 Power Automate for Desktop (以下简称PAD)是微软推出的一款针对Windows桌面端的免费RPA(机器人流程自动化)工具,它目前默认会随着Windows 11安装,但 ...

  4. 第06组 Beta冲刺 (4/5)

    目录 1.1 基本情况 1.2 冲刺概况汇报 1.郝雷明 2. 方梓涵 3.曾丽莉 4.鲍凌函 5. 董翔云 6.黄少丹 7.杜筱 8.詹鑫冰 9.曹兰英 10.吴沅静 1.3 冲刺成果展示 1.1 ...

  5. 「POI2012」井 Well

    description 你要挖井,\(n\)个地面的高度可视为\(h_i\),每次操作你可以将一个\(h_i-1\),你最多可执行\(m\)次操作. 你要任选其中一个\(h_i\)挖到\(0\),问你 ...

  6. [算法学习] dsu on tree

    简介 dsu on tree跟dsu没有关系,但是dsu on tree借鉴了dsu的启发式合并的思想. 它是用来解决一类树上的询问问题,一般这种问题有以下特征: \(1.\)只有对子树的查询: \( ...

  7. 关于『Markdown』:第二弹

    关于『Markdown』:第二弹 建议缩放90%食用 道家有云:一生二,二生三,三生万物 为什么我的帖子不是这样 各位打工人们! 自从我学了Markdown以来 发现 Markdown 语法真的要比 ...

  8. 是时候为Spring Boot 3.0做准备了

    2018年2月28日Spring Boot进入2.0时代,距今已经超过4年了. 2022 年 11 月 Spring Boot 3.0 将正式发布,它将基于 Spring Framework 6.0, ...

  9. isprime

    C++实现求素数个数 问题描述 求1~n的素数个数(例:n=10) 1 2 3 4 5 6 7 8 9 10 prime 2 3 5 7 not prime 1 4 6 8 9 10 素数又称质数.所 ...

  10. BI 如何让SaaS产品具有 “安全感”和“敏锐感”(上)

    SaaS模式一经推出,凭借自身的高性价比.低维护成本,无需软硬件维护.无需运维等明晃晃的优点,得到了爆发式的增长,甚至全面改变了软件的开发模式.各位老总的问候语,不知从什么时候开始,都变成了:&quo ...