函数式编程:python3利用socket模块模拟TCP通信-一次性连接

模拟TCP通信过程,此例为一次性连接,实现的功能是,客户端连接服务器21567端口,采用的连接方式是TCP,发送数据给与服务端,服务端打印出数据,然后反馈(【当前时间】发送数据)给回客户端,断开连接

import socket                                               #导入socket模块
from time import strftime                              #导入时间模块

host = ''                                                         #定义接受的主机,此处为all主机
port = 21567                                                 #定义监听的端口
addr = (host, port)                                         #把主机和端口放到一个元组内
s = socket.socket()                                       #定义服务端 
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)   #设定默认参数,此处的参数功能是,socket模块,不会一次连接完成后,自动退出。
s.bind(addr)                                                  #服务端绑定地址,地址就是刚刚定义的主机和监听端口
s.listen(2)                                                     #启用监听

cli_sock, cli_addr = s.accept()                     #服务端先接收数据,接收的数据是元组类型的,里面包含的值就是客户端连接信息,客户端地址信息
rdata = cli_sock.recv(1024)                         #定义数据rdata为客户端连接信息,recv为接收信息的实例。每次接收1024字节。
rdata = rdata.decode('utf8')                         #处理rdata数据,utf8转码(此处不明白原理。但不转码很难看)
print(rdata.strip())                                        #打印出接收到的数据,去除数据两边的空白符。

sdata = '[%s] %s' % (strftime('%H:%S:%M'), rdata)      #定义发送的数据为(【当前时间】接收到的信息),
cli_sock.send(sdata.encode('utf8'))            #客户端连接发送定义好的发送数据,utf8转码(此处不明白原理。但不转码很难看)
cli_sock.close()                                           #关闭客户端连接
s.close()                                                     #关闭服务器连接


此例为一次性连接,函数式编程,程序的执行是从上到下执行的。比较好理解。总的来说,建立服务端,接收客户端数据,反馈客户端数据,关闭客户端连接,关闭服务端连接。

发布了73 篇原创文章 · 获赞 4 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_27592485/article/details/100760769