本文记录python网络编程中关于TCP套接字编程的客户端和服务端的框架,以及UDP套接字编程的客户端和服务端的框架
TCP套接字编程
TCP套接字编程是基于TCP三次握手和四次挥手的基础上,因此在数据传输前需要建立连接,
那么TCP套接字编程的服务端和客户端端的工作流程如下所示
基础服务端框架
'''
服务端框架1.0
'''
import socket
def tcp_server():
'''
练习套接字编程
:return:
'''
sockfd = socket.socket(socket.AF_INET, socket.SOCK_STREAM, proto=0)
#绑定ip和端口
sockfd.bind(('127.0.0.1', 8888))
#设置监听
sockfd.listen(5)
#等待客户端连接
print("waiting for connect....")
connfd, addr = sockfd.accept()
print("connect from ",addr)
#收消息
data = connfd.recv(1024)
print("Receive message >>",data)
#发消息
n = connfd.send(b'receive your message\n')
#print("Send %d bytes data"%n)
#关闭套接字
connfd.close()
sockfd.close()
if __name__=="__main__":
tcp_server()
pass
基础客户端框架
'''
客户端框架1.0
'''
import socket
def tcp_client():
'''
练习套接字编程
:return:
'''
sockfd = socket.socket(socket.AF_INET, socket.SOCK_STREAM, proto=0)
#建立连接
sockfd.connect(('127.0.0.1', 8888))
#发消息
data = input("send>>")
sockfd.send(data.encode())
#接受消息
data2 = sockfd.recv(1024)
print(data2)
#关闭套接字
sockfd.close()
if __name__=="__main__":
tcp_client()
pass
循环接入服务端
'''
服务端框架
'''
import socket
def tcp_server():
'''
练习套接字编程
实现服务器不退出,可以一直接入客户端
:return:
'''
sockfd = socket.socket(socket.AF_INET, socket.SOCK_STREAM, proto=0)
# 绑定ip和端口
sockfd.bind(('127.0.0.1', 8888))
# 设置监听
sockfd.listen(5)
# 等待客户端连接
# flag_service = True
while True:
print("waiting for connect....")
connfd, addr = sockfd.accept()
print("connect from ", addr)
while True:
# 收消息
data = connfd.recv(1024)
print("Receive message >>", data)
if not data:
break
# 发消息
n = connfd.send(b"receive your message\n")
# 关闭套接字
connfd.close()
sockfd.close()
pass
if __name__=="__main__":
tcp_server()
pass
客户端循环发消息
'''
客户端框架
'''
import socket
def tcp_client():
'''
练习套接字编程
客户端循环发消息,当输入回车时退出
:return:
'''
sockfd = socket.socket(socket.AF_INET, socket.SOCK_STREAM, proto=0)
#建立连接
sockfd.connect(('127.0.0.1', 8888))
#发消息
#flag_client = True
while True:
data = input("send>>")
if not data :
break
sockfd.send(data.encode())
#接受消息
data2 = sockfd.recv(1024)
#print(data2)
#关闭套接字
sockfd.close()
pass
if __name__=="__main__":
tcp_client()
pass