python底层网络接口TCP编程实验报告
- 格式:wps
- 大小:452.00 KB
- 文档页数:10
网络编程实验报告
实验题目:底层网络接口编程实验
一、TCP编程
1、需求分析
tcp是面向连接的可靠的协议,适用于传输大批量的文件,检查是否正常传输。tcp需要先建立连接才能通话 。
tcp可以形象比喻为打电话的过程,udp可以比喻为发短信的过程
tcp不能发送广播和组播,只能单播
2、概要设计
3、详细设计
(1)、伪代码:
TCP服务器端:
ss=socket() #创建服务器套接字
ss.bind() #把本地地址绑到套接字上
ss.listen() #监听连接
inf_loop: #服务器无限循环
cs=ss.accept() #接受客户端的连接
comm._loop: #通信循环
cs.recv()/cs.send() #对话
cs.close() #关闭客户套接字
ss.close() #关闭服务器套接字
TCP客户端:
cs=socket() #创建客户套接字
cs.connect() #尝试连接服务器
comm._loop: #通信循环
cs.send()/cs.recv() #对话
cs.close() #关闭套接字
(2)、TCP服务器脚本如下:
from socket import * 导入socket所有内建方法from time import ctime 导入时间类
#主机
HOST = '' #''代表服务器为localhost #端口号
PORT = 12345
#缓存大小
BUFSIZE = 1024
#完整地址
ADDR = (HOST, PORT)
#参数SOCK_STREAM表示建立一个TCP服务器tcpSerSock = socket(AF_INET, SOCK_STREAM)
#绑定到指定端口
tcpSerSock.bind(ADDR)
#最多连接5个客户端
tcpSerSock.listen(5)
while True:
print 'Waiting for connection...'
tcpCliSock, addr = tcpSerSock.accept()
print '...connected from: ', addr
while True:
#接收客户端数据
data = tcpCliSock.recv(BUFSIZE)
if not data:
break
print 'Received from client:', data
#向客户端发送数据
tcpCliSock.send('[%s] %s' % (ctime(), data))
#关闭连接
tcpCliSock.close()
tcpSerSock.close()
注:一种友好的退出方法是把服务器的无限循环放在一个try-except语句的try子句当中,并捕获EOFError和KeyboardInterrupt异常,在异常处理子句中,调用close()函数关闭服务器的套接字。
(3)、TCP客户端脚本如下:
from socket import *
#设置连接参数
#主机(本机)
HOST = 'localhost'
#端口号
PORT = 12345
#缓存大小
BUFSIZE = 1024
#完整地址
ADDR = (HOST, PORT)
#SOCK_STREAM参数表示建立TCP连接
tcpCliSock = socket(AF_INET, SOCK_STREAM)
#使用socket的connect方法连接服务器
tcpCliSock.connect(ADDR)
while True:
data = raw_input('>')
if not data:
break
#向服务器发送数据
tcpCliSock.send(data)
#接收服务器返回的数据
data = tcpCliSock.recv(BUFSIZE)
if not data:
break
print data
#关闭连接
tcpCliSock.close()
4、程序设计及运行结果
(1)、服务器程序:
(2)、客户端程序:
(3)、程序结果在两个shell中演示:
二、UDP编程
1、需求分析
udp是面向非连接的不可靠的协议,适用于传输一次性小批量的文件,不对传输数据报进行检查
udp不需要,实时性要高点
udp可以广播和组播
2、概要设计
3、详细设计
(1)、伪代码:
UDP服务器端:
Ss=socket() #创建套接字
ss.bind() #绑定
inf_loop: #无限循环
ss.recvfrom()/sendto() #对话
ss.close() #关闭套接字
UDP客户端:
Cs=socket() #创建
Comm_loop: #循环接收发送
Cs.sendto()/recvfrom() #对话
Cs.close() #关闭
(2)、UDP服务器脚本如下:
from socket import *
from time import ctime
HOST = '' #''代表服务器为localhost PORT = 12345
BUFSIZE = 1024
ADDR = (HOST, PORT)
#SOCK_DGRAM参数表示建立UDP连接udpSerSock = socket(AF_INET, SOCK_DGRAM) udpSerSock.bind(ADDR)