欢迎光临散文网 会员登陆 & 注册

TCL/TK网络编程:服务器端、客户端的极简例子

2023-03-08 22:43 作者:象喻  | 我要投稿

服务器端:简单理解,就是一个软件,它持续盯着本地系统的一个或n个网络端口(一般称为"监听"),当端口收到信息时,对信息进行处理(符合条件的反馈,否则忽略)

客户端:通过网络向网络地址的指定端口发送信息,接收反馈的软件

服务器-客户端运行方式简介

每一个服务器端软件都会通过端口与外界连通,当它跟一个客户端软件交换信息之后,会分配一个临时端口(一般是靠后的端口,比如60233)持续与该客户端通信——这样可以避免监听的端口出现阻塞,继续等待其它客户端。

另:根据网络底层的TCP/IP协议,计算机共有65535个端口,其中前1023为保留端口,有公约的用途。但随着发展,保留端口已经不够用了,编程时建议选数字大的端口,以免发生端口冲突。


进行基于网络的编程时还需要一些辅助软件,最基本的是发收网络信息的小软件,比如Windows平台的Telnet客户端(可能需要手动在  里激活)和Linux平台的nc


下面是TCL/TK服务器端的例子,该代码实现监听6060端口,并向每一个连接的客户端发送固定的消息 "+OK 象喻@BiliBili Server Ready" 同时把来访客户端的信息在本地显示出来:

注意:为便于理解使用了中文,如果运行报错请换成英文

运行后会先显示"Server Run",用Telnet连接127.0.0.1 6060之后:

此时Telnet窗口显示的是:

以上是服务器端简单的例子。

下面稍微复杂点,持续显示接收到的客户端信息:

注意:Windows上的Telnet在输入字符时即会向服务器端发送信息(即一个字符一个字符发送),但是回车Enter后才算一行,所以在TCL的服务器端会显示出很多空行。并且Telnet的c退出指令跟直接关闭窗口一样,并非正常的关闭通道。如果在"通道处理"的代码中,有 puts $sock "象喻@BiliBili" 这样的语句,最好放在 catch 命令里,否则在面对Telnet这样的客户端时会导致异常断开错误(会报错,但不会导致服务器程序终止执行)。

服务器端
Telnet客户端

这个服务器程序除了用Telnet测试外,还可以用浏览器测试,虽然浏览器接收不到http消息会报错,但在服务器端是可以正常显示浏览器发送过来的http协议请求的:

客户端代码,也是最简单的例子:

其它代码跟服务器端类似

TCL/TK网络编程:服务器端、客户端的极简例子的评论 (共 条)

分享到微博请遵守国家法律