网络编程:socket—基于 TCP 协议编程|学习笔记

简介: 快速学习网络编程:socket—基于 TCP 协议编程

开发者学堂课程【大数据 ZooKeeper 快速入门 网络编程:socket—基于 TCP 协议编程】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/549/detail/7582


网络编程:socket—基于 TCP 协议编程


一、socket—基于 TCP 协议编程

Tcp最大的特点就是在于发送数据的时候不需要打包,需要建立链接,一旦建立链接成功之后就会形成数据传输的通道,就可以在通道中进行输入流和输出流来进行数据的发送和接收。客户端代码实现:客户端中 java 核心 API 叫做 socket,通过socket 构造客户端的 socket 对象,打开 idea 进行代码实现:

首先创建一个包 cn.itcast.socket.tcp

在包中创建客户端中的一个类:TCPSocketClient,Client 主要用于数据的发送。

流程:在客户端即发送数据端,第一步创建 socket 对象,对象是 socket 通信的基石,通过对象来指定发送数据的主机、目的地,通过建立之后,在对象当中形成数据传输的通道,就是所谓的输入流和输出流,在这个流当中进行数据的输入和输出。

代码实现思路:

创建客户端的 socket 服务核心类 Socket

1、在 socket 指定传输数据的目的ip和端口

2通过 socket 建立的通道输出数据

3、释放资源

public class TCPSocketclient {

//首先创建 main 方法,

public static void main(String[] args)throws Exception {

//创建客户端的 socket 服务Socket

//在 socket 指定传输数据的目的 ip 和端口,new 一个 socket 需要输入一些信息,分别是主机 ip(127.0.0.1)和地址(端口12321),这样就完成了客户端 socket 的建立以及端口的指定,发现代码中,直接抛出最大的一个异常 throws Exception

Socket client = new Socket( "127.0.0.1",12321);

//通过 socket 建立的通道输出数据

//取得输出流,写数据,从 client 包中调用 getOutputStream() 进行输出调用,最后封装给 outputstream

Outputstream outputstream = client.getOutputStream();

//通过 write 方法写出数据,这是需要一个 byte 数组,这样就通过 outputStream 完成了对数据的写出

outputStream.write( "hello,this is tcp".getBytes());

//释放资源

client.close();

}

以上完成了对客户端代码的书写,创建一个服务,通过对象获取一个输出流,之后通过写数据即可

服务端实现:

服务端

核心 API:ServerSocket

流程逻辑:

1. 创建 ServerSocket 服务,然后绑定在服务器的 IP 地址和端口

2. 监听连接请求

3. 如果有客户端接受请求,建立了 TCP 连接

4. 获取输入流读取数据,并显示

5. 释放资源

在服务端创建一个了类:TCPSocketServer

public class TCPSocketServer {

//首先创建 main 方法

public static voidmain ( String[]args) throws Exception{

//建立服务端 socket 服务  ServerSocket(注意服务端的核心API:ServerSocket)并且监听本机的一个端口,new 一个 ServerSocket 对象进行绑定本地端口,注意端口与客户端保持一致,若不一致将不能进行链接传输数据,然后进行抛出异常 throws Exception

ServerSocket server = new ServerSocket(12321);

//监听连接阻塞方法  有请求过来  建立连接  返回与之对应的 socket 来  通信,调用 accept(方法),阻塞:程序运行到这将会一直等待,如果没有客户端发送 socket 请求,就会一直停留在这,如果有请求就会进行反应一个请求,放回方法直接是一个 socket,封装给 s,然后由客户端和服务端的 socket 进行通信,ServerSocket 继续保持服务,

Socket  s = server.accept();

//获取输入流读取数据,然后就能写入数据,调用 getInputStream 方法进行输入,接收数据,返回为 Inputstream 类型

Inputstream inputStream = s.getInputStream();

//设置一个 byte 数组1024

Byte[] bys = new byte[1024];

//针对 inputStream 进行读取,调用 read 方法读取数据 bys,把数据存放到 len 中,因为读取的是长度 lenth

int len = inputstream.read (bys);

//sout 打印数据,从bys数组中第一个读取到最后(最大长度)

System.out.println( new String(bys,0,len));

//释放资源,打印完毕后需要进行关闭资源

s.close();

server .close();

}}

以上代码完成,右键进行运行测试:发现堵塞在那没有结束运行

接下来运行客户端程序:

hello,this is tcp

发现已经返回了结果,这样就完成了基于 TCP 协议的传输,重点需要明白协议的特点以及使用哪个 API 作为参数

相关文章
|
18天前
|
Kubernetes 网络协议 Python
Python网络编程:从Socket到Web应用
在信息时代,网络编程是软件开发的重要组成部分。Python作为多用途编程语言,提供了从Socket编程到Web应用开发的强大支持。本文将从基础的Socket编程入手,逐步深入到复杂的Web应用开发,涵盖Flask、Django等框架的应用,以及异步Web编程和微服务架构。通过本文,读者将全面了解Python在网络编程领域的应用。
18 1
|
21天前
|
Java
[Java]Socket套接字(网络编程入门)
本文介绍了基于Java Socket实现的一对一和多对多聊天模式。一对一模式通过Server和Client类实现简单的消息收发;多对多模式则通过Server类维护客户端集合,并使用多线程实现实时消息广播。文章旨在帮助读者理解Socket的基本原理和应用。
16 1
|
27天前
|
消息中间件 监控 网络协议
Python中的Socket魔法:如何利用socket模块构建强大的网络通信
本文介绍了Python的`socket`模块,讲解了其基本概念、语法和使用方法。通过简单的TCP服务器和客户端示例,展示了如何创建、绑定、监听、接受连接及发送/接收数据。进一步探讨了多用户聊天室的实现,并介绍了非阻塞IO和多路复用技术以提高并发处理能力。最后,讨论了`socket`模块在现代网络编程中的应用及其与其他通信方式的关系。
|
29天前
|
网络协议 Linux 应用服务中间件
Socket通信之网络协议基本原理
【10月更文挑战第10天】网络协议定义了机器间通信的标准格式,确保信息准确无损地传输。主要分为两种模型:OSI七层模型与TCP/IP模型。
|
1月前
|
网络协议 Linux 网络性能优化
Linux基础-socket详解、TCP/UDP
综上所述,Linux下的Socket编程是网络通信的重要组成部分,通过灵活运用TCP和UDP协议,开发者能够构建出满足不同需求的网络应用程序。掌握这些基础知识,是进行更复杂网络编程任务的基石。
103 1
|
2月前
|
网络协议 Python
网络世界的建筑师:Python Socket编程基础与进阶,构建你的网络帝国!
在数字宇宙中,网络如同复杂脉络连接每个角落,Python Socket编程则是开启这一世界的钥匙。本文将引导你从基础概念入手,逐步掌握Socket编程,并通过实战示例构建TCP/UDP服务器与客户端。你将学会使用Python的socket模块进行网络通信,了解TCP与UDP的区别,并运用多线程与异步IO提升服务器性能。跟随本文指引,成为网络世界的建筑师,构建自己的网络帝国。
35 2
|
2月前
|
网络协议 开发者 Python
网络编程小白秒变大咖!Python Socket基础与进阶教程,轻松上手无压力!
在网络技术飞速发展的今天,掌握网络编程已成为开发者的重要技能。本文以Python为工具,带你从Socket编程基础逐步深入至进阶领域。首先介绍Socket的概念及TCP/UDP协议,接着演示如何用Python创建、绑定、监听Socket,实现数据收发;最后通过构建简单的聊天服务器,巩固所学知识。让初学者也能迅速上手,成为网络编程高手。
70 1
|
1月前
|
网络协议 测试技术 网络安全
Python编程-Socket网络编程
Python编程-Socket网络编程
|
2月前
|
网络协议
关于套接字socket的网络通信。&聊天系统 聊天软件
关于套接字socket的网络通信。&聊天系统 聊天软件
|
3天前
|
安全 网络安全 数据安全/隐私保护
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
【10月更文挑战第38天】本文将探讨网络安全与信息安全的重要性,包括网络安全漏洞、加密技术和安全意识等方面。我们将通过代码示例和实际操作来展示如何保护网络和信息安全。无论你是个人用户还是企业,都需要了解这些知识以保护自己的网络安全和信息安全。