一、什么是Socket编程?
1.定义
Socket(套接字)可以被理解为网络上两个进程之间通信的端点。它是网络通信的抽象表示,封装了底层网络协议的复杂性,为应用程序提供了一个简单统一的接口。
Socket 编程是一种网络编程范式,它允许不同计算机上的进程通过网络进行通信。这种通信可以发生在同一设备上的不同进程之间,也可以发生在不同地理位置的设备之间。Socket 编程提供了一种标准的方式来实现网络通信,是构建各种网络应用的基础。
2.Socket编程的特点
(1)网络抽象:隐藏了底层网络协议的细节,使开发者只需关注应用层逻辑
(2)双向通信:支持数据的双向传输
(3)进程标识:通过 IP 地址和端口号唯一标识网络中的进程
(4)协议无关:可基于不同的传输层协议(如 TCP、UDP)
3.Socket通信模型
Socket通信基于客户端-服务器模型
服务器:监听特定端口,等待客户端连接请求
客户端:主动发起连接请求,与服务器建立通信
4.Socket编程的使用场景
Web服务器和客户端、即时通信应用(如聊天软件)、文件传输(如FTP、SFTP)、远程控制、网络游戏、分布式系统、物联网设备通信
二、Socket编程基于TCP协议和UDP协议的通信机制
TCP(传输控制协议):面向连接、可靠、基于字节流的协议
UDP(用户数据报协议):无连接、不可靠、基于数据报的协议
1.socket基于TCP协议的通信机制
仓颉客户端构建:
仓颉服务器端构建:
运行结果:
客户端:
服务器:
2.Socket基于UDP协议的通信机制
仓颉客户端构建:
仓颉服务器端构建:
运行结果:
三、基于Socket编程,仓颉语言和java语言能否实现跨语言通信呢?
尝试使用仓颉语言构建客户端,使用java语言构建服务器端
1.仓颉语言构建客户端:
2.java语言构建服务器端:
运行结果:
java服务器:
仓颉客户端:
在java中,接收一条消息,通常以换行符“\n”为作为一条消息的结束。所以仓颉作为客户端向java服务器发送的消息需要以“\n”结束,java这边才可以正常接收到消息