TCP通信的实现代码
TCP通信
概念
传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。
从百科定义中就可以看出,TCP通信的基本条件是连接,传输的是字节流。
- 通信基本流程(类似打招呼的方式):
1.三次握手
2.四次挥手
客户端
//客户端
public class TCPDemo01 {
public static void main(String[] args) throws Exception {
//1.要知道服务器的ip,端口号
InetAddress ip = InetAddress.getByName("127.0.0.1");//ip
int port = 9999;//端口号
//创建socket
Socket socket = new Socket(ip,port);
//发送消息
OutputStream os = socket.getOutputStream();
os.write("你好".getBytes());
//关闭资源
os.close();
socket.close();
}
}
服务端
//服务端
public class TCPDemo02 {
public static void main(String[] args) throws Exception {
//1.有一个端口号
ServerSocket serverSocket = new ServerSocket(9999);
//2.等待客户端连接
Socket socket = serverSocket.accept();//客户端的socket
//3.读取客户端消息
InputStream is = socket.getInputStream();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buf = new byte[1024];
int len;
while ((len=is.read(buf))!=-1){
baos.write(buf,0,len);
}
System.out.println(baos.toString());
//关闭资源
baos.close();
is.close();
socket.close();
serverSocket.close();
}
}
- 用TCP协议实现上传文件到服务端
客户端
public class client01 {
public static void main(String[] args) throws Exception {
//1.获取服务端ip和端口
InetAddress ip = InetAddress.getByName("127.0.0.1");
int port = 9999;
//2.创建socket对象
Socket socket = new Socket(ip,port);
//3.获取输出流
OutputStream os = socket.getOutputStream();
//4.创建文件输入流
FileInputStream fis = new FileInputStream("F:/桌面文件/a.txt");
//5.写文件
byte[] buf = new byte[1024];//缓冲区
int len;
while ((len=fis.read(buf))!=-1){
os.write(buf,0,len);
}
//通知传输结束
socket.shutdownOutput();//输出完了
//等服务端接收完
InputStream is = socket.getInputStream();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buf2 = new byte[1024];
int len2;
while ((len2=is.read(buf2))!=-1){
baos.write(buf2,0,len2);
}
System.out.println(baos.toString());
//6.关闭资源
baos.close();
is.close();
fis.close();
os.close();
socket.close();
}
}
服务端
public class servlet01 {
public static void main(String[] args) throws IOException {
//1.创建服务端接口
ServerSocket serverSocket = new ServerSocket(9999);
//2.等待连接
Socket socket = serverSocket.accept();
//3.输入流
InputStream is = socket.getInputStream();
//4.创建文件输出流
FileOutputStream fos = new FileOutputStream("receive.txt");
//5.输出文件
byte[] buf = new byte[1024];
int len;
while ((len=is.read(buf))!=-1){
fos.write(buf,0,len);
}
//通知客户端,接收完毕
OutputStream os = socket.getOutputStream();
os.write("接受完毕".getBytes());
//6.关闭资源
fos.close();
is.close();
socket.close();
serverSocket.close();
}
}
TCP通信的实现代码的更多相关文章
- TCP通信的客户端代码实现和TCP通信的服务器代码实现
TCP通信的客户端代码实现 package com.yang.Test.ServerStudy; import java.io.*; import java.net.Socket; /** * TCP ...
- 【Java TCP/IP Socket】基于NIO的TCP通信(含代码)
NIO主要原理及使用 NIO采取通道(Channel)和缓冲区(Buffer)来传输和保存数据,它是非阻塞式的I/O,即在等待连接.读写数据(这些都是在一线程以客户端的程序中会阻塞线程的操作)的时候, ...
- [C++] socket - 1 [简单TCP通信C\S代码]
服务端: #include<iostream> #include<winsock2.h> #include<stdio.h> #pragma comment(lib ...
- 【Java TCP/IP Socket】深入剖析socket——TCP通信中由于底层队列填满而造成的死锁问题(含代码)
基础准备 首先需要明白数据传输的底层实现机制,在http://blog.csdn.net/ns_code/article/details/15813809这篇博客中有详细的介绍,在上面的博客中,我们提 ...
- TCP通信服务端及客户端代码
Java TCP通信使用的是Socket(客服端)和ServerSocket(服务端),具体代码如下. server端代码: import java.io.BufferedReader; import ...
- 清晰易懂TCP通信原理解析(附demo、简易TCP通信库源码、解决沾包问题等)C#版
目录 说明 TCP与UDP通信的特点 TCP中的沾包现象 自定义应用层协议 TCPLibrary通信库介绍 Demo演示 未完成功能 源码下载 说明 我前面博客中有多篇文章讲到了.NET中的网络编程, ...
- JAVASE02-Unit010: 多线程基础 、 TCP通信
多线程基础 . TCP通信 * 当一个方法被synchronized修饰后,那么 * 该方法称为同步方法,即:多个线程不能同时 * 进入到方法内部执行. package day10; /** * 当多 ...
- 艺萌文件上传下载及自动更新系统(基于networkComms开源TCP通信框架)
1.艺萌文件上传下载及自动更新系统,基于Winform技术,采用CS架构,开发工具为vs2010,.net2.0版本(可以很容易升级为3.5和4.0版本)开发语言c#. 本系统主要帮助客户学习基于TC ...
- NetworkComms V3 使用TCP通信传递IList<T>类型的数据
客户端从服务器获取一组IList<T>类型的数据非常常见(通常从数据库中获取) 我们用NeworkComms V3来演示一下(NetworkcommsV2.x版本也同样支持) [ 使用pr ...
随机推荐
- Python自动化测试面试题-编程篇
目录 Python自动化测试面试题-经验篇 Python自动化测试面试题-用例设计篇 Python自动化测试面试题-Linux篇 Python自动化测试面试题-MySQL篇 Python自动化测试面试 ...
- 第八篇 -- 对数据库mysql进行连接并压测
参考链接:https://blog.csdn.net/laofashi2015/article/details/81296929 工具:mysql-8.0.12-winx64,apache-jmete ...
- HTTP协议GET方法传参最大长度理解误区
结论 HTTP 协议未规定GET和POST的长度 GET的最大长度是因为浏览器和WEB服务器显示了URI的长度 不同浏览器和WEB服务器,限制的最大长度不同 若要支持IE,则最大长度为2083 byt ...
- webSocket实现多人聊天功能
webSocket实现多人在线聊天 主要思路如下: 1.使用vue构建简单的聊天室界面 2.基于nodeJs 的webSocket开启一个socket后台服务,前端使用H5的webSocket来创建一 ...
- php 几个算法
/** * 返回当前运行文件名 * @acces private * @return string */ private function run_filename() { $tmparr = exp ...
- 搭建SSM基础环境>基于idea
目录 搭建SSM基础环境 创建一个Web项目 导入所需要的jar包 在项目目录下创建一个Resources文件夹并设置为类路径 在src目录下创建项目的初始文件夹目录 在resources文件夹下创建 ...
- ACM金牌选手讲解LeetCode算法《哈希》
大家好,我是编程熊. 往期文章介绍了<线性表>中的数组.链表.栈.队列,以及单调栈和滑动窗口. ACM金牌选手讲解LeetCode算法<线性表> ACM金牌选手讲解LeetCo ...
- 通过cmake在Android中调用c语言,且三方应用通过so库调用c语言
1. 新建JniUtils类实现native方法 2. 在build中执行clean project 再rebuild project 生成class文件. 注意:最新版本的AndroidStud ...
- 移动端 CPU 的深度学习模型推理性能优化——NCHW44 和 Record 原理方法详解
用户实践系列,将收录 MegEngine 用户在框架实践过程中的心得体会文章,希望能够帮助有同样使用场景的小伙伴,更好地了解和使用 MegEngine ~ 作者:王雷 | 旷视科技 研发工程师 背景 ...
- idea 2019.3.3 系列产品破解
所有软件版本要求 必须是2019.3.3版本,可破解idea, goland, datagrid, pycharm等系列产品. 编辑vmoptions 添加破解jar包 然后重新打开,输入激活码进行激 ...