先声明一下,本人是学习web方向,这篇文章是关于我在学校学习python的时候学到一个比较有意思的东西,所以写来记录一下,并非专业python学生,不足之处欢迎指正,另外,图片是CSDN的很正常,DianC(AcssGood是我CSDN的id)是我本人哈,只不过不在CSDN上更新了而已。
先了解一些其中的原理
socket简称套接字,是进程间通信的一种方式。与其他的方式的进程间的通讯的方式不同的是,socket是实现了主机间进程间的通讯。我们网络上的各种服务都是基于socket来完成的,例如QQ、微信。
udp—–数据报文协议,是一个无连接的简单的面向数据报的运输层协议,UDP不提供可靠性,他只是将应用程序传送给IP层的数据报文发送出去,并不保证能否达到目的地。由于UDP在传输的过程中不需要和服务器建立链接。且没有超时重发的的机制。故而传输很快。
通过这张图我们来看代码就明了多了
代码实现
服务器端源码:
import socket
serverSocket = socket.socket()
serverSocket.bind(('127.0.0.1',12345))
serverSocket.listen(5)
print("等待客户端发起请求")
while True:
conn,addr = serverSocket.accept()
print("客户端连接成功,等待对方响应中 !")
while True:
try:
recv_data = conn.recv(1024)
if len(recv_data) == 0:
print("服务器: 退出连接")
break
print("客户端: "+ str(recv_data.decode()))
send_data = input("请输入你的回应: ")
conn.send(bytes(send_data,encoding='UTF-8'))
print("正在等待客户端回应: ")
except Exception:
break
conn.close()
客户端源码:
import socket
clientSocket = socket.socket()
clientSocket.connect(('127.0.0.1', 12345))
while True:
send_data = input("客户端: ")
if send_data == 'exit':
print("客户端: 退出连接")
break
if len(send_data) == 0:
continue
clientSocket.send(bytes(send_data, encoding='utf-8'))
print("正在等待服务器回应: ")
recv_data = clientSocket.recv(1024)
print("服务器: "+str(recv_data.decode()))
clientSocket.close()
运行效果
本代码仅限单线程,即一个人只能说一句话然后等待对方回应,后续我可能会去了解一下关于群聊的方式,就是多线程聊天,但目前我还是不会的。