pythonsocket网络编程实验报告Word文件下载.docx

上传人:b****8 文档编号:22121879 上传时间:2023-02-02 格式:DOCX 页数:11 大小:856.40KB
下载 相关 举报
pythonsocket网络编程实验报告Word文件下载.docx_第1页
第1页 / 共11页
pythonsocket网络编程实验报告Word文件下载.docx_第2页
第2页 / 共11页
pythonsocket网络编程实验报告Word文件下载.docx_第3页
第3页 / 共11页
pythonsocket网络编程实验报告Word文件下载.docx_第4页
第4页 / 共11页
pythonsocket网络编程实验报告Word文件下载.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

pythonsocket网络编程实验报告Word文件下载.docx

《pythonsocket网络编程实验报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《pythonsocket网络编程实验报告Word文件下载.docx(11页珍藏版)》请在冰豆网上搜索。

pythonsocket网络编程实验报告Word文件下载.docx

如果端口号正在被使用或者保留,或者主机名或ip地址错误,则引发socke.error异常。

3.绑定后,必须准备好套接字,以便接受连接请求。

socket.listen(backlog)

backlog指定了最多连接数,至少为1,接到连接请求后,这些请求必须排队,如果队列已满,则拒绝请求。

4.服务器套接字通过socket的accept方法等待客户请求一个连接:

connection,address=socket.accept()

调用accept方法时,socket会进入'

waiting'

〔或阻塞〕状态。

客户请求连接时,方法建立连接并返回服务器。

accept方法返回一个含有俩个元素的元组,形如(connection,address)。

第一个元素〔connection〕是新的socket对象,服务器通过它与客户通信;

第二个元素〔address〕是客户的internet地址。

5.处理阶段,服务器和客户通过send和recv方法通信〔传输数据〕。

服务器调用send,并采用字符串形式向客户发送信息。

send方法返回已发送的字符个数。

服务器使用recv方法从客户接受信息。

调用recv时,必须指定一个整数来控制本次调用所接受的最大数据量。

recv方法在接受数据时会进入'

blocket'

状态,最后返回一个字符串,用它来表示收到的数据。

如果发送的量超过recv所允许,数据会被截断。

多余的数据将缓冲于接受端。

以后调用recv时,多余的数据会从缓冲区删除。

6.传输结束,服务器调用socket的close方法以关闭连接。

〔二〕、建立一个TCP客户端连接则需要4个步骤:

1.创建一个socket以连接服务器socket=socket.socket(family,type)

2.使用socket的connect方法连接服务器socket.connect((host,port))

3.客户和服务器通过send和recv方法通信。

4.结束后,客户通过调用socket的close方法来关闭连接。

二,建立TCP连接

首先建立服务器程序。

创建套接字,绑定套接字,开始监听,就是一个while循环一直监听有没有消息连接。

客户端程序

创建套接字,连接,等待输入,发送。

同一台电脑结果在两个shell中演示。

局域网内交互测试信息:

作为服务器,来自IP地址为:

192.168.1.101客户端的消息。

三,建立UDP连接

UDP的建立过程基本和TCP一样,看以下代码异同,这里不在熬述。

建立服务器程序

创建套接字,开始监听,就是一个while循环一直监听有没有消息连接。

建立客户端程序

创建套接字,while循环一直监听有没有消息连接。

两个shell中演示显示数据传送

局域网内的信息交互:

作为服务器,来自IP地址为192.168.1.101的消息。

作为客户端,向IP地址为192.168.1.101的服务器发送消息。

总结:

一般的TCP和UDP连接服务器和客户端的内容和步骤。

TCP服务器端:

1创建套接字,绑定套接字到当地地址,然后开始监听连接。

就是socket,bind,listen。

2进入循环,不断接受客户端的连接请求,然后接收传来的数据,当然也可以发送给对方数据。

就是accept一个连接,然后recv数据。

3接收完毕可以关闭套接字,close。

这个过程的伪代码如下:

ss=socket()#创建服务器套接字

ss.bind()#把本地地址绑到套接字上

ss.listen()#监听连接

inf_loop:

#服务器无限循环

cs=ss.accept()#接受客户端的连接

comm._loop:

#通信循环

cs.recv()/cs.send()#对话

cs.close()#关闭客户套接字

ss.close()#关闭服务器套接字

TCP客户端:

1创建套接字,然后连接远端地址,socket,connect。

2建立连接之后开始发送数据。

Send〔data〕,当然可以从缓冲区读取服务器发来的数据。

Recv〔BUFF〕

3完毕后,关闭套接字。

Close

伪代码如下:

cs=socket()#创建客户套接字

cs.connect()#尝试连接服务器

cs.send()/cs.recv()#对话

cs.close()#关闭套接字

UDP服务器端:

1创建套接字,并绑定到当地地址socket,bing

2直接接收数据从buffer。

Recvfrom〔〕,这个函数接受到数据,和sender的地址〔主机号,端口号〕,当然也可以发送数据到客户端,用sendto〔data,addr〕

3关闭套接字close〔〕

伪代码:

Ss=socket()#创建套接字

ss.bind()#绑定

#无限循环

ss.recvfrom()/sendto()#对话

ss.close()#关闭套接字

UDP客户端:

1创建套接字,socket

2进入循环,发送接收数据sendto,recvfrom

Cs=socket()#创建

Comm_loop:

#循环接收发送

Cs.sendto()/recvfrom()#对话

Cs.close()#关闭

Send〔〕sendto〔〕recv〔〕recvfrom〔〕

我们发现在TCP连接中我们发生接收数据都是用的send〔〕和recv〔〕方法,而在UDP中用的sendto〔〕和recvfrom〔〕。

这两对方法实现的作用差不多,但是参数有所不同,

TCP中,send〔data〕和recv〔buffer〕,因为在TCP中,传输数据之前连接已经建立,也就是说我们知道给谁发,或者收谁的数据。

而在UDP中用,recvfrom〔buffer〕和sendto〔data,addr〕,recvfrom可以接受到sender的addr,然后发送时,根据addr发送。

因为UDP不是面向连接的,所以我们必须知道这个数据要发给谁,它的地址什么。

四,UDP广播

1,工作原理

在UDP广播通讯模式下,一个单独的数据包拷贝发送给网络上所有主机。

当不能明确具体的服务器,而又要求该服务时,UDP广播提供了传输不区分种类的消息的便捷方式。

在多数情况下UDP广播仅仅作为本地网络通信形式。

受限的广播地址是255.255.255.255。

该地址用于主机配置过程中IP数据报的目的地址,此时,主机可能还不知道它所在网络的网络掩码,甚至连它的IP地址也不知道。

在任何情况下,路由器都不转发目的地址为受限广播地址的数据报,这样的数据报仅出现在本地网络中。

已知网络主机的IP地址和子网掩码,可以算得指向主机所在子网的广播。

子网广播地址=〔主机IP〕“或”〔子网掩码取反〕。

2,拓扑结构

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1