最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

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

来源:懂视网 责编:小采 时间:2020-11-27 14:26:32
文档

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

Pythonsocket网络编程TCP/IP服务器与客户端通信:Python socket网络编程初学 python,前段时间买了两本书《python 编程从入门到实践》《Python 核心编程第三版》,第一本书主要讲的是一些基本语法和一些基本的使用方法,而第二本则深入很多,自己看来也是一知半解,刚好看到了这部分网络编程,依然有好多不太
推荐度:
导读Pythonsocket网络编程TCP/IP服务器与客户端通信:Python socket网络编程初学 python,前段时间买了两本书《python 编程从入门到实践》《Python 核心编程第三版》,第一本书主要讲的是一些基本语法和一些基本的使用方法,而第二本则深入很多,自己看来也是一知半解,刚好看到了这部分网络编程,依然有好多不太

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(ADDR) #连接服务器

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服务器与客户端通信相关文章请关注PHP中文网!

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文档

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

Pythonsocket网络编程TCP/IP服务器与客户端通信:Python socket网络编程初学 python,前段时间买了两本书《python 编程从入门到实践》《Python 核心编程第三版》,第一本书主要讲的是一些基本语法和一些基本的使用方法,而第二本则深入很多,自己看来也是一知半解,刚好看到了这部分网络编程,依然有好多不太
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top