参考代码:
客户端:
import socket
def main():
# 1.创建tcp的套接字
tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 2.连接服务器
# tcp_socket.connect("127.0.0.1", 1897)
server_ip = input("请输入服务器ip:")
server_port = input("请输入服务器port:")
server_addr = (server_ip, int(server_port))
tcp_socket.connect(server_addr)
while True:
# 3.发送数据/接收数据
send_data = input("请输入要发送的数据:")
if send_data == 'exit' or send_data == 'quit':
break
tcp_socket.send(send_data.encode('utf-8'))
recv_data = tcp_socket.recv(1024)
print(recv_data.decode('utf-8'))
# 4.关闭套接字
tcp_socket.close()
if __name__ == "__main__":
main()
服务端:
import socket
def main():
# 1.创建一个TCP套接字
tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 2.绑定信息
local_addr = ("", 7890)
tcp_server_socket.bind(local_addr)
# 3.设为监听模式
tcp_server_socket.listen(128)
while True:
# 4.accept等待。返回:连接进来的客户端创建新的套接字,连接进来的客户端的地址
print("等待一个客户端的到来:")
new_socket, client_addr = tcp_server_socket.accept()
print("来自一个客户端 ", client_addr)
while True:
# 5.接收客户端数据
recv_data = new_socket.recv(1024)
# 如果recv_data解堵塞,那么有两种方式:
# (1) 客户端发送过来数据
# (2) 客户端调用close导致了这里解堵塞
#如果是空的,说明客户端关闭了
if not recv_data:
print("bye:", client_addr)
break
# 打印客户端发送来的数据
print("receive data from client is: ", recv_data.decode('utf-8'))
# 给客户端发送数据
new_socket.send("--ok--".encode('utf-8'))
# 关闭这次accpet创建的为了这次服务的套接字
new_socket.close()
# 7.关闭监听的套接字
tcp_server_socket.close()
if __name__ == "__main__":
main()
运行结果:
标签:__,socket,Python,tcp,server,TCP2,data,客户端