Python完成Socket编程

本文介绍了Socket作为Unix/Linux哲学中的特殊文件,用于网络通信的基本概念。Socket不仅用于HTTP请求,还广泛应用于各种网络应用程序。文章通过代码展示了Python中服务器端和服务端如何进行简单的TCP通信,强调了编码问题的重要性,并提供了错误解决方案。
摘要由CSDN通过智能技术生成

 Socket简述       

        socket迁移于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,对于文件用【打开】【读写】【关闭】模式来操作。socket就是该模式的一个实现,socket即是一种特殊的文件,一些socket函数就是对其进行的操作(读/写IO、打开、关闭)。

        基本上,Socket 是任何一种计算机网络通讯中最基础的内容。例如当你在浏览器地址栏中输入 http://www.cnblogs.com/ 时,你会打开一个套接字,然后连接到 http://www.cnblogs.com/ 并读取响应的页面然后然后显示出来。而其他一些聊天客户端如 gtalk 和 skype 也是类似。任何网络通讯都是通过 Socket 来完成的。             

        socket和file的区别:

  1、file模块是针对某个指定文件进行【打开】【读写】【关闭】

  2、socket模块是针对 服务器端 和 客户端Socket 进行【打开】【读写】【关闭】 

        Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。

                                                                                                 ——来自连接一作者的说法。            

代码部分

服务端

#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 文件名:server.py
 
import socket               # 导入 socket 模块
 
s = socket.socket()         # 创建 socket 对象
host = socket.gethostname() # 获取本地主机名
port = 12345                # 设置端口
s.bind((host, port))        # 绑定端口
 
s.listen(5)                 # 等待客户端连接
print("等待完毕····")
while True:
    c,addr = s.accept()     # 建立客户端连接
    print('连接地址:%s',addr)
    var='欢迎访问菜鸟教程!'
    var=var.encode()
    c.send(var)
    c.close()                # 关闭连接

客服端

#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 文件名:client.py
 
import socket               # 导入 socket 模块
 
s = socket.socket()         # 创建 socket 对象
host = socket.gethostname() # 获取本地主机名
port = 12345                # 设置端口号
 
s.connect((host, port))
var=s.recv(1024)
var=var.decode()
print(var)
# print(s.recv(1024))
s.close()

这部分代码是来自菜鸟链接下方参考资料链接3,但由于使用时候报错:

        “TypeError: a bytes-like object is required, not ‘str’ ”

由于编码问题,参考链接:Python报“TypeError: a bytes-like object is required, not ‘str’ ”解决办法 - 付杰博客

解决了问题,感谢。

参考资料

 python之socket编程_mxh的博客-CSDN博客_python socket【精品】

Python中socket解读_python学习者的博客-CSDN博客_python socket【精品】

Python 网络编程 | 菜鸟教程【精品】

Python实现Socket通信的简单例子_su_bao的博客-CSDN博客_python socket通信

Python 官方关于 Socket 的函数请看 socket — Low-level networking interface — Python 3.10.0 documentation

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值