Python网络编程(Socket)
Python网络编程(Socket)
本教程为您提供最有名的网络概念的理解 - Socket编程
什么是套接字(Sockets)?
套接字是一个双向的通信信道的端点。套接字可能在沟通过程,进程之间在同一台机器上,或在不同的计算机之间的进程.
套接字可以实现通过不同渠道类型的号码:Unix域套接字的TCP,UDP等等。套接字库提供处理处理,共同传输,以及一个通用的接口的具体类.
套接字有自身词汇表:
Term | Description |
---|---|
domain | The family of protocols that will be used as the transport mechanism. These values are constants such as AF_INET, PF_INET, PF_UNIX, PF_X25, and so on. |
type | The type of communications between the two endpoints, typically SOCK_STREAM for connection-oriented protocols and SOCK_DGRAM for connectionless protocols. |
protocol | Typically zero, this may be used to identify a variant of a protocol within a domain and type. |
hostname |
The identifier of a network interface:
|
port | Each server listens for clients calling on one or more ports. A port may be a Fixnum port number, a string containing a port number, or the name of a service. |
socket 模块:
要创建一个套接字,你必须使用socket.socket()函数,它在socket模块,其中有一般的语法:
s = socket.socket (socket_family, socket_type, protocol=0)
下面是参数的描述:
socket_family: 这是AF_UNIX或AF_INET,正如我刚才解释.
socket_type: 这是SOCK_STREAM,或为SOCK_DGRAM.
protocol: 这通常被不用关心,默认为0.
一旦你有套接字对象,那么你可以使用所需的功能来创建你的客户端或服务器程序。以下是所需的功能列表:
服务器 Socket 方法:
Method | Description |
---|---|
s.bind() | This method binds address (hostname, port number pair) to socket. |
s.listen() | This method sets up and start TCP listener. |
s.accept() | This passively accept TCP client connection, waiting until connection arrives (blocking). |
客户端Socket 方法:
Method | Description |
---|---|
s.connect() | This method actively initiates TCP server connection. |
一般Socket 方法:
Method | Description |
---|---|
s.recv() | This method receives TCP message |
s.send() | This method transmits TCP message |
s.recvfrom() | This method receives UDP message |
s.sendto() | This method transmits UDP message |
s.close() | This method closes socket |
socket.gethostname() | Returns the hostname. |
一个简单的服务器:
写一个互联网服务器,我们使用的socket模块插座功能可用来创建一个socket对象。一个Socket对象,然后用来调用其他函数来设置套接字服务器.
现在调用bind(主机名,端口)函数,给定主机上的一个端口指定为您服务.
接下来,调用的accept方法返回的对象。这种方法等待,直到一个客户端连接到您指定的端口,然后返回一个连接对象,表示客户端的连接.
#!/usr/bin/python # This is server.py fileimport socket # Import socket modules = socket.socket() # Create a socket object host = socket.gethostname() # Get local machine name port = 12345 # Reserve a port for your service. s.bind((host, port)) # Bind to the ports.listen(5) # Now wait for client connection. while True:c, addr = s.accept() # Establish connection with client.print 'Got connection from', addrc.send('Thank you for connecting')c.close() # Close the connection
一个简单的客户端:
现在我们将编写一个非常简单的客户端程序,这将打开一个连接到一个特定的端口12345和给定的主机。这是非常简单的创建一个socket客户端使用Python的socket模块功能.
socket.connect(主机名或IP, 端口)打开到主机上的TCP端口的连接.
一旦你打开一个套接字,你可以看到它像任何IO对象。当完成后,记得要关闭它,你会关闭文件。
下面的代码是一个非常简单的客户端连接到一个特定的主机和端口,读取从套接字任何可用的数据,然后退出:
#!/usr/bin/python # This is client.py fileimport socket # Import socket modules = socket.socket() # Create a socket object host = socket.gethostname() # Get local machine name port = 12345 # Reserve a port for your service.s.connect((host, port)) print s.recv(1024) s.close # Close the socket when done
现在运行这个背景server.py,然后运行以上client.py看到的结果.
# Following would start a server in background. $ python server.py & # Once server is started run client as follows:$ python client.py
这将产生以下结果:
Got connection from ('127.0.0.1', 48437) Thank you for connecting
Python网络模块
可以使用Python中的网络/互联网编程的一些重要的模块列表.
Protocol | Common function | Port No | Python module |
---|---|---|---|
HTTP | Web pages | 80 | httplib, urllib, xmlrpclib |
NNTP | Usenet news | 119 | nntplib |
FTP | File transfers | 20 | ftplib, urllib |
SMTP | Sending email | 25 | smtplib |
POP3 | Fetching email | 110 | poplib |
IMAP4 | Fetching email | 143 | imaplib |
Telnet | Command lines | 23 | telnetlib |
Gopher | Document transfers | 70 | gopherlib, urllib |
请查看上面提到所有库的合作与FTP,SMTP的POP,IMAP协议.
进阶阅读资料:
我已经给你一个Socket编程的快速启动。这是一个大课题,因此建议通过下面的链接去寻找更详细:
Unix Socket Programming.
Python Socket Library and Modules.
Python网络编程(Socket)相关推荐
- 树莓派 Python 网络编程 (Socket入门)
树莓派 Python 网络编程 (Socket入门) 什么是 Socket? Socket又称"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络 ...
- python网络编程--socket简单实现
python网络编程 ...
- Python网络编程socket
网络编程之socket 看到本篇文章的题目是不是很疑惑,what is this?,不要着急,但是记住一说网络编程,你就想socket,socket是实现网络编程的工具,那么什么是socket,什么是 ...
- python网络编程-socket编程
一.服务端和客户端 BS架构 (腾讯通软件:server+client) CS架构 (web网站) C/S架构与socket的关系: 我们学习socket就是为了完成C/S架构的开发 二.OSI七层模 ...
- python网络编程—Socket
一.Socket是什么? socket:简称套接字,是进程间通讯的一种方式,他与其他进程间通讯的一个主要不同是:它能实现不同主机间进程间通讯,我们网络上各种各样的服务大多是基于Socket来完成通讯的 ...
- python 网络编程--socket模块/struct模块
socket模块: 客户端:CS架构, client -> server 浏览器:BS架构, browser -> server 网络通信本质:传输字节 doc命令查看ip地址:ipc ...
- Day8 - Python网络编程 Socket编程 --转自金角大王
本节内容: Socket语法及相关 SocketServer实现多并发 Socket语法及相关 socket概念 socket本质上就是在2台网络互通的电脑之间,架设一个通道,两台电脑通过这个通道来实 ...
- python 网络编程 socket 报错 ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接。
服务端: # -*- coding: utf-8 -*- """ @File : 191226_基于UDP协议的socket_server端.py @Time : 201 ...
- Python网络编程——socket套接字实现UDP/TCP信息传输
socket套接字 socket(简称 套接字) ,是支持TCP/IP的网络通信的基本操作单元,可以看做是不同主机之间的进程进行双向通信的端点,简单的说就是通信的两方的一种约定,用套接字中的相关函数来 ...
最新文章
- 物理IP和浮动IP分别的含义是什么
- v-model详细使用
- 《每日一题》49. Group Anagrams 字母异位词分组
- 酸了!第一名+第三名的学霸情侣,分别直博清华、人大…
- linux获取ip地址的接口,获取Linux上接口的IP地址
- 因循守旧最好:都是CPU架构,为什么你叫sw_64,而不是sw64?多别扭啊
- Android开发(一)
- 用Python实现简单的服务器【新手必学】
- 联想计算机的控制面板在哪,教程知识:联想win10控制面板在哪里打开
- ROS创建Web代理(Web proxy)
- python 四象限图_方法:高效处理工作的四象限图
- 超全,整理了18种常用数据分析模型和方法
- 数据仓库 Hive 从入门到小牛(一)
- 一键使 WIN 10进入休眠、睡眠、关机的命令
- 苏嵌//张朋//2018.07.16
- linux+zip+加密+无交互,Linux下zip加密压缩
- 免信任型计算的扩容模型
- ios各种手势,很有意思
- 刘润:进化的力量年度演讲全文图解
- 从概念AI到普惠AI:走遍中国的华为云在忙什么?
热门文章
- 如何区别***工具与病毒
- nodejs操作mysql查询返回的数据_nodejs连接mysql进行数据库查询返回前台数据的坑...
- Java学习系列(十三)Java面向对象之界面编程
- PHP判断用户是否登录
- Mybatis, 实现一对多
- Reactjs不能忽略的key
- 源码安装php时出现configure: error: xml2-config not found. Please check your libxml2 installation...
- 数据转换成json传递
- CSS浏览器兼容问题
- Settings点击Location(位置)后右上角的开关button不会消失