Python进阶系列
python网络编程 之 网络通信过程
(服务端与客户端编写)
本文使用的环境:win10 + 虚拟机 ubuntu16.04
使用到的软件:网络调试助手,python3
代码在ubuntu中编写执行
1.UDP 用户数据报协议 不稳定;比tcp快
2.TCP 传输控制协议 稳定;比udp慢
完成一个tcp服务器的功能流程:
socket 创建套接字
bind 绑定 ip 和 port
listen 使套接字变为可以被动连接
accept 等待客户端的连接
recv send 接收发送数据
编写简单TCP服务端程序
from socket import *
#创建tcp套接字
serverSocket = socket(AF_INET,SOCK_STREAM)
#绑定ip,port
serverSocket.bind(("",8890))
#允许的最大连接数
serverSocket.listen(5)
print("-1-服务器启动")
#clientSocket 表示这个新客户端,clienttInfo表示新客户端的信息
#等待客户端连接
clientSocket,clientInfo = serverSocket.accept()
print("-2-客户端已连接")
#等待发送数据
recvData = clientSocket.recv(1024)
print("-3-接收到客户端数据:")
print("%s:%s"%(str(clientInfo),recvData))
clientSocket.close()
serverSocket.close()
先查看ubuntu中的ip,执行代码后,打开「网络调试助手」并连接ubuntu的ip填写端口号:


编写简单TCP客户端程序
from socket import *
clientSocket = socket(AF_INET,SOCK_STREAM)
#连接服务器
clientSocket.connect(("192.168.112.1",8989))
#向服务器发送消息,
# send()和udp的sendto()不同因为tcp客户端 已连接服务器,而不再需要填ip
clientSocket.send("hello zranfly".encode("gb2312"))
#接收打印服务器发来的消息
recvData = clientSocket.recv(1024)
print("recvData:%s"%recvData)
clientSocket.close()
#注意tcp胡udp不同的地方:send()和sendto();recv()和recvfrom()


#TCP 服务器基本过程
tcpSocket = socket(AF_INET,SOCK_STREAM) #创建tcp套接字
tcpSocket.bind() #绑定ip和port
tcpSocket.listen() #监听连接
while XXX: #服务器无限循环
tcpClient = tcpSocket.accept() #接收/等待客户端的连接
while XXX: #通信循环
data = tcpClient.recv() tcpClient.send() #对话(接收/发送)
可添加其他条件退出循环
tcpClient.close() #关闭 客户端 套接字
tcpSocket.close() #关闭 服务端 套接字
#UDP 服务器基本过程
udpSocket = socket() #创建 udp 套接字
udpSocket.bind() #绑定信息
while XXX: #服务器无限循环
data,addr = udpSocket.recvfrom() udpSocket.sendto() #关闭 接收/发送
#可添加其他条件退出循环
udpSocket.close() #关闭服务器套接字
#TCP客户端
clientSockent = socket() #创建tcp客户端套接字
clientSocket.connect() #尝试连接服务器
while XXX: #通信循环
data = clientSockent.send() clientSocket.recv() #对话 (发送 接收)
#可添加其他条件退出循环
clientSocket.close() #关闭客户端套接字
#UDP客户端
clientSocket = socket() #创建客户端套接字
while XXX: #通信循环
data,addr = clientSocket.sendto() / clientSocket.recvfrom() #对话
#可添加其他条件退出循环
clientSocket.close() #关闭套接字
拥抱新技术
不要给自己设限!

文章转载自我们的编程日记,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




