实验三-20222314陈振烨 Socket编程

落影_ 2023-06-07 19:00:34

20222314 陈振烨《Python程序设计》实验三报告

课程:《Python程序设计》
班级: 2223
姓名: 吴昊宇
学号:20222314
实验教师:王志强
实验日期:2023年4月20日
必修/选修: 公选课

1.实验内容

创建服务端和客户端,服务端在特定端口监听多个客户请求。客户端和服务端通过Socket套接字(TCP/UDP)进行通信。

2. 实验过程及结果

#客户端
import socket

# 创建套接字对象,AF_INET基于TCP/UDP通信,SOCK_STREAM以数据流的形式传输数据,这里就可以确定是TCP了
server = socket.socket(family=socket.AF_INET,type=socket.SOCK_STREAM)

# 绑定ip地址和端口,127.0.0.1代表回环地址,只能当前计算机访问
server.bind(('127.0.0.1',8080))

# 建立半链接池,允许存放5个请求
server.listen(5)

# 等待建立连接请求,会返回两个值,一个是连接会话,一个是连接的客户端IP与端口
conn,ip_addr = server.accept()

while True:
    # 接收客户端传递的数据,不能超过1024字节
    res = conn.recv(1024)

    # 将客户端的数据接收到以后,转换成大写再编码后发送给客户端
    conn.send(res.decode('utf-8').upper().encode('utf-8'))

    # 注意:close不能放在这里面,因为在这里面的话,只能一次后就关闭了

# 关闭与客户端的连接
conn.close()

# 关闭套接字
server.close()

 

#客户端
import socket

# 创建套接字对象,AF_INET基于TCP/UDP通信,SOCK_STREAM以数据流的形式传输数据,这里就可以确定是TCP了
client = socket.socket(family=socket.AF_INET,type=socket.SOCK_STREAM)

# 连接服务端
client.connect(('127.0.0.1',8080))

while True:
    inp = input('>>>:').strip()
    # 向服务端发送数据,需要转换成Bytes类型发送
    client.send(inp.encode('utf-8'))

    # 接收服务端回应给客户端的数据,不能超过1024字节
    res = client.recv(1024)

    print(res.decode('utf-8'))

# 套接字关闭
client.close()

运行结果:

先启动服务端

再启动客户端

 思考与反思:

    刚开始我并没有采用127.0.0.1来作为链接端口,而是采用了我电脑的ip(之前尝试过使用同学的ip,但是需要防火墙关闭,就没让我南京的同学以为我号被盗了是骗子说啥也不信,就没继续操作下去),但是仍然出现了拒绝链接的反馈,我使用nmap扫描了自己的端口,并没有问题,防火墙我也关了,至于为什么不行我还是没搞清楚,可能是因为权限不够?需要root权限?我还是不懂,这也是我本次试验的遗憾。当然,换成127.0.0.1(默认连自己)之后就可以了,也不需要做什么开防火墙权限和自定义可接受协议之类的杂活

感悟:socket其实并不是一门只能基于python的通信方式,它可以依赖于大多数语言,以后希望有机会可以实现更多的通信项目,加强自己对于通信领域的理解(虽然我不是通信专业的哈哈哈)

 

...全文
559 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
源码直接下载地址: https://pan.quark.cn/s/8ac6a8c064f8 Intellij Idea 12 外部jar包导入操作指南 Intellij Idea 12作为一款功能丰富且被广泛采纳的集成开发环境(IDE),为开发者提供了多种便利的工具以支持快速且高效的软件开发与调试工作。在众多功能中,从外部导入jar包是Intellij Idea 12的一项核心操作,接下来的内容将系统性地阐释如何在Intellij Idea 12环境中执行外部jar包的导入操作。 _步骤一:进入项目结构设置界面_ 启动Intellij Idea 12软件,加载一个既有的项目或新建一个项目,随后通过点击“文件”(File)菜单并从下拉选项中选择“项目结构”(Project Structure),此操作将引导用户进入项目结构配置界面。 _步骤二:执行模块添加流程_ 在呈现的项目结构配置界面中,用户需选择“模块”(Modules)这一选项卡,随后点击界面上的“+”符号,并从弹出的列表中选择“JARs or directories”(jar文件或目录),这一步骤将触发“添加jar或目录”(Add Jar or Directory)的对话框显示。 _步骤三:指定要导入的jar文件_ 在“添加jar或目录”(Add Jar or Directory)的对话框中,用户需要浏览并选中计划导入的jar文件,之后点击“确定”(OK)按钮,以完成jar文件的添加过程至项目中。 _步骤四:验证jar文件的导入状态_ 完成上述步骤后,用户可返回至项目结构配置界面,并在“依赖项”(Dependencies)选项卡下查看到新添加的jar文件,这证明了jar文件已成功被导入至项目中。 _注意事项_...

144

社区成员

发帖
与我相关
我的任务
社区描述
开展Python教学和技术交流
python 高校 北京·丰台区
社区管理员
  • blackwall0321
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧