• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Python socket网络编程TCP/IP服务器与客户端通信

python 搞代码 4年前 (2022-01-08) 14次浏览 已收录 0个评论

这篇文章主要介绍了Python socket网络编程TCP/IP服务器与客户端通信的相关资料,这里对Scoket 进行详解并创建TCP服务器及TCP 客户端实例代码,需要的朋友可以参考下

Python socket网络编程

初学 python,前段时间买了两本书《python 编程从入门到实践》《Python 核心编程第三版》,第一本书主要讲的是一些基本语法和一些基本的使用方法,而第二本则深入很多,自己看来也是一知半解,刚好看到了这部分网络编程,依然有好多不太理解的地方,不过想来通过自己不断的摸索,不断地搜寻资料学习,早晚应该会变得通透吧…….

这部分主要使用的模块就是 socket 模块,在这个模块中可以找到 socket()函数,该函数用于创建套接字对象,套接字也有自己的方法集,这些方法可以实现基于套接字的网络通信。

socket()模块函数

要创建套接字,必须使用 socket.socket()函数,他一般的语法如下

 socket(socket_family, socket_type, protocol=0)

其中socket_family是 AF_UNIX或 AF_INET,socket_type 是 SOCK_STREAM 或 SOCK_DGRAM,protocol 通常省略,默认=0.

所以创建 TCP/IP 套接字,可以使用下面的方式调用 socket.socket().

 tcpSock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

同样创建 UDP/IP 套接字,使用下面的方法调用

 udpSock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

创建 TCP 服务器

创建 TCP 服务器的流程基本如下,并非正真正的代码

 ss = socket()          #创建服务器套接字 ss.bind()              #套接字与地址绑定 ss.listen()             #监听连接 inf_loop:             #服务器无限循环 cs = ss.accepr()   #接受客户端连接 comm_loop:      #通信循环 cs.recv()/cs.send()   #对话(接收/发送) cs.close()        #关闭客户端套接字 ss.close()            #关闭服务器套接字(可选) 

实际中创建 TCP 服务器基本流程就如上边所说,可能稍有不同但基本思路应该是相通的,下边是真正穿件服务器的代码:

 #!/usr/bin/env python # -*- coding: utf-8 -*- from socket import *      #将 socket 属性引入到命名空间 HOST = ''          #这是对 bind()方法的标识表示可以使用任何可用的地址 PORT = 21571      #端口号 BUFSIZ = 1024     #缓冲区大小,1kb ADDR = (HOST,PORT)   #地址???? tcpSerSocket = socket(AF_INET,SOCK_STREAM)    #创建 tcp 套接字 tcpSerSocket.bind(ADDR)           #将地址绑定到套接字上 tcpSerSocket.listen(5)            #设置并启动套接字监听 while True:        #无限循环,等待客户端连接 print('waiting for connection...') tcpCliSocket,addr = tcpSerSocket.accept()    #被动接受客户端连接 print('...connected from:',addr) while True:      #对话循环,等待客户端发送消息 data = tcpCliSocket.recv(BUFSIZ)   #接收客户端消息 if not data:     #如果消息是空白,跳出对话循环,关闭当前连接 break tcpCliSocket.send(data)   #如果收到消息,将消息原封不动返回客户端 tcpCliSocket.close() tcpSerSocket.close() 

创建 TCP 客户端

同上边一样,一个简单的非代码流程

 cs = socket()    #创建客户端套接字 cs.connect()     #尝试连接服务器 comm_loop:     #通信循环 cs.send()/cs.recv()  #对话(发送/接收) cs.close()       #关闭客户端套接字 

实际中创建客户端也是翻译上边的步骤

 #!/usr/bin/env python # -*- coding: utf-8 -*- from socket import * HOST = 'localhost'    #服务器的主机名 PORT = 21571     #端口号 BUFSIZ = 1024     #缓冲区 ADDR = (HOST,PORT)   #地址 tcpCliSocket = socket(AF_INET,SOCK_STREAM)  #创建客户端套接字 tcpCliSocket.connect(ADD<a style="color:transparent">来源gao($daima.com搞@代@#码网</a>R)     #连接服务器 while True:        #通信循环 data = input('> ')    #客户端输入信息 if not data:   #如果输入信息为空,则跳出循环,关闭通信 break data = str.encode(data) tcpCliSocket.send(data)   #发送客户端信息 data = tcpCliSocket.recv(BUFSIZ)   #接受服务器返回信息 if not data:    #如果服务器未返回信息,关闭通信循环 break print('get:',data.decode('utf-8')) tcpCliSocket.close() 

当然,这只是最基础的通信,而且关于主机名,端口号之类的东西暂时还不是很懂,目前所做的只是在同一台电脑上通信,端口号也需要一致,如果不同的电脑进行通信该怎么做?我还只是个小白…..

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

以上就是Python socket网络编程TCP/IP服务器与客户端通信的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Python socket网络编程TCP/IP服务器与客户端通信

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址