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. 鸭的NOI ONLINE杂刷

    好耶!洛谷账号橙了! 水题 [NOI Online #2 入门组] 未了 这就是一道贪心+二分查找,思路很好想 除法有精度问题,建议不使用除法 code [NOI Online #3 提高组] 水壶 ...

  2. django基础--02基于数据库的小项目

    摘要:简单修改.增加部分页面,了解django开发的过程.(Python 3.9.12,django 4.0.4 ) 接前篇,通过命令: django-admin startproject myWeb ...

  3. MinGW 和 TDM 的问题

    目前遇到的一个小问题就是批量声明时的初始化. mingw gcc 9.2:不支持int a,b,c=5; 所得数为a=0 b=0 c=5. 而在TDM gcc 5.1中,可以同时赋值. 第二个问题,T ...

  4. vs.net调试ArcGIS Engine代码查看变量时,提示“要检查本机对象,请启用本机代码调试。” 的解决方法

    用vs2017 调试 查看ArcGIS Engine 的变量时 会提示如下图所示的错误: 解决方法: 工具->选项->调试->常规->使用托管的兼容模式 如下图所示: 2.设置 ...

  5. MySQL闪回工具之binlog2sql

    一.binlog2sql 1.1 安装binlog2sql git clone https://github.com/danfengcao/binlog2sql.git && cd b ...

  6. 【leetcode】239. 滑动窗口最大值

    目录 题目 题解 三种解法 "单调队列"解法 新增.获取最大值 删除 代码 题目 给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧.你只可以 ...

  7. 深度学习可视化工具--tensorboard的使用

    tensorboard的使用 官方文档 # writer.add_scalar() # 添加标量 """ Args: tag (string): Data identif ...

  8. 【Java】在IDEA中将Javafx项目打包成为可运行的.jar文件

    在使用Javafx制作一个图形化界面程序的时候,我遇到了打包文件的难题. 按照网上给出的解决方案构建出来的jar文件总是没有办法运行. 以下是我最终的解决方案. 我使用的IDE是IntelliJ ID ...

  9. 用Arduino显示颜色序列(u8g2,OLED)

    目录 用Arduino显示颜色序列(u8g2,OLED) 用Arduino显示颜色序列(u8g2,OLED) 提前祝大家新年快乐! 主控:Arduino Mega 2560 硬件:126×64 OLE ...

  10. Java注释、标识符、关键字

    Java注释.标识符.关键字 注释 单行注释以"//" 开始:多行注释以 "/*" 开始,以"*/"结束:文档注释以 "/**&q ...