socket模块最简单的tcp客户,服务端的通信实现
实现步骤:
下面是tcp通信的图解:
代码依照上图布局:
(1)tcp客户端
import socket
def main():
#1.建立一个套接字socket
tcp_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#2.链接一个服务器connect
server_ip = input("对方ip:")
server_port =int(input("对方端口:"))
tcp_socket.connect((server_ip,server_port))
while True:
#3.发送信息
send_data = input("请输入你想发送的内容:")
#发送的内容要进行编码
tcp_socket.send(send_data.encode("utf-8"))
#4.接受信息
recv_data = tcp_socket.recv(1024)
#接收的内容需要解码。因为socket是以字节流进行传输的
print(recv_data.decode("utf-8"))
#5关闭
tcp_socket.close()
if __name__ == "__main__":
main()
(2)tcp服务端代码:
import socket
def main():
# 1.创建一个tcp套接字socket
tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 2.绑定本地地址,端口号bind
tcp_socket.bind(("", 7758))
# 3.监听个数 listen(128)
tcp_socket.listen(128)
while True:
print("***************服务器开始*****************")
print("")
# 4.接受客户进来,accept 返回元祖,一个变量提供当前进来客户到的服务
# 第二个变量继续等待下一个客户
new_server, address = tcp_socket.accept()
while True:
# 5.接受客户信息
mess = new_server.recv(1024)
if mess:
print(mess.decode("utf-8"))
# 5.给客户返回信息
send_message = input("请输入你要回复的信息:")
new_server.send(send_message.encode("utf-8"))
else:
break
# 6.关闭当前服务的客户
new_server.close()
# 7.关闭套接字
tcp_socket.close()
if __name__ == "__main__":
main()