1、模拟通信,进行消息收发
【1】初版server端
from socket import *
# 1、创建套接字对象
sock = socket(family = AF_INET,type = SOCK_STREAM,proto = 0)
# 2、绑定地址
sock.bind(("127.0.0.1",8989))
# 3、设置监听
sock.listen(5)
#4、等待连接
print("等待客户端连接...")
connd,addr = sock.accept()
print("已有客户端连接:",addr)
#5、消息收发
#接收消息
data = connd.recv(1024)
print("服务器收到的消息:",data.decode())
#给连接的客户端回复消息,
#给连接的客户端回复消息,
# send方法的参数必须为字节串,【1】【2】两种方式均可以
#【1】对消息进行编码,转换为字节串
#使用【2】的话,不能使用中文,只能为ASCII编码
# sed = connd.send("The server accepted your msg.".encode()) # 【1】
sed = connd.send(b"The server accepted your msg.") #【2】
print("send %d bytes"%sed)
#6、关闭套接字
connd.close()
sock.close()
【1】初版client端
import socket
# 1、创建套接字对象
sock = socket.socket()
#-------------------
# import导入方式导入socket的话,socket方法不能添加参数,server也一样。
# from import *方式导入时可以添加参数 #python版本:3.7.6
#sock = socket.socket(sock_family = AF_INET, sock_type = SOCK_STREAM,proto = 0)
# Traceback (most recent call last):
# File "D:/python_program/TCP/tcp-client.py", line 4, in <module>
# sock = socket.socket(sock_family = AF_INET, sock_type = SOCK_STREAM,proto = 0)
# NameError: name ‘AF_INET‘ is not defined
#------------------
#2 、发起连接
sock.connect(("127.0.0.1",8989))
#3、消息收发
#输入要发送的消息
msg = input("请输入要发送的消息:Msg>>>")
#发送消息
#-----
#sed=sock.send(msg.encode())
#print("send %d bytes"%sed)
#----
sock.send(msg.encode())
# 接收消息
data = sock.recv(1024)
print("收到服务器回复的消息:",data.decode())
#4、关闭套接字
sock.close()
#===========================================================================#
原文:https://www.cnblogs.com/longyuu/p/14226483.html