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

猜你喜欢

转载自www.cnblogs.com/wind-under-the-wing/p/12819590.html