python网络编程——TCP服务的简单实现
TCP服务的简单实现过程分为服务端和客户端的实现,
首先服务端的实现过程大致为
################
##TCP服务端结构##
################
tcps = socket() #创建服务器套接字
tcps.bind() #把地址绑定到套接字
tcps.listen() #监听链接
while True: #服务器无限循环
tcpc = tcps.accept() #接受客户端链接
while True: #通讯循环
tcpc.recv()/tcpc.send() #对话(接收与发送)
tcpc.close() #关闭客户端套接字
tcps.close() #关闭服务器套接字(可选)
下面放上代码:
服务端的代码为
#server.py import socket import sys # 创建socket对象 serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # SOCK_STREAM面向连接 # 获取本地主机名 host = socket.gethostname() port = 9999 # 绑定端口 serversocket.bind((host, port)) # bind()绑定地址(host,port)到套接字, # 在AF_INET下,以元组(host, port)的形式表示地址 # 设置最大连接数,超过后排队 serversocket.listen(5) while True: # 建立客户端链接 clientsocket, addr = serversocket.accept() # 被动接受TCP客户端链接,等待传入连接。 # 返回代表连接的新套接字以及客户端的地址。 # 对于IP套接字,地址信息是一对(hostaddr,端口)。 print("链接地址: %s" % str(addr)) msg = "欢迎访问翼下之风的博客!" + "\r\n" clientsocket.send(msg.encode('utf-8')) clientsocket.close()
客户端的代码为
#client.py import socket import sys #创建socket对象 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #获取本地主机名 host = socket.gethostname() port = 9999 #链接服务,指定主机和端口 s.connect((host, port)) #接收小于num_byte的数据 num_byte = 1024 msg = s.recv(num_byte) s.close() print(msg.decode('utf-8'))
需要介绍的是,这两个程序如果在同一个主机上运行,那么可以看到服务端print出来的ip地址为127.0.0.1,这个IP地址是一个本主机内的环回地址,如果需要在局域网内的两个主机中分别运行这两个脚本,则需要将客户端中的
host = socket.gethostname()
修改为host = IP #ip为服务端所运行的主机的ip
上述为个人学习笔记,欢迎学习交流,不当之处请留言,看到就修改,thanks for view