Python网络编程学习:Socket基础

1. Socket基础

客户端与服务器连接有两种方式:TCP和UDP,TCP是面向连接的方式(三次握手、四次挥手等),可靠但耗资源,而UDP采用无连接方式,不可靠但速度快。这里面的学问很多,但大部分人知道这些就足够了

2. 一个简单的TCP例子(阻塞方式)

不管是Python还是其它语言,Socket编程几乎都有一个固定模板,下面看一个简单例子,用于计算阶乘和,比如客户端发送5,服务器端返回5!+4!+3!+2!+1!。

Server端Python代码:

import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.bind(('localhost', 21567))
sock.listen(1)
while True:
    print 'waiting for connecting...'
    connection,address = sock.accept()
    print '...connected from: %s:%i'%(address[0],address[1])
    while True:
        data = connection.recv(1024)
        if not data:
            break
        result = 0
        for i in range(1,int(data)+1):
            result = result + reduce(lambda x,y:x*y,range(1,i+1))
        connection.send('the result is %i'%result)
    connection.close()
sock.close()

下面是该段代码的解释:

首先,实例化一个socket对象,需要三个参数,第一个是地址族(一般都是AF_INET),第二个参数指定连接方式(SOCK_STREAM表示TCP方式,SOCK_DGRAM表示UDP方式),第三个参数定义使用的协议。

然后,绑定IP地址和端口,开启监听,并设置等待连接的队列长度。

服务器端是用accept()方法接受客户端,采用阻塞方式,即如何没有客户端连上来,将会一直阻塞等待。

一旦接收到客户端请求,就可以用recv()方法接受数据,对数据进行处理之后,再利用send()方法返回给客户端。

Client端Python代码:

import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(('localhost', 21567))
data = '5'
sock.send(data)
receivedData = sock.recv(1024)
print receivedData
sock.close()

客户端代码非常简单,首先也是实例化一个socket对象,然后和服务器端建立连接,发送数据,接受服务器端返回的数据

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索客户端
, 服务器
, socket
, send recv
, python学习
, sock
, python 服务端
, 一个
, python的socket编程
, 方式
socket方式
,以便于您获取更多的相关知识。

时间: 2024-09-15 17:49:03

Python网络编程学习:Socket基础的相关文章

python网络编程学习笔记(二):socket建立网络客户端_python

1.建立socket 建立socket对象需要搞清通信类型和协议家族.通信类型指明了用什么协议来传输数据.协议的例子包括IPv4.IPv6.IPX\SPX.AFP.对于internet通信,通信类型基本上都是AF_INET(和IPv4对应).协议家族一般表示TCP通信的SOCK_STREAM或者表示UDP通信的SOCK_DGRAM.因此对于TCP通信,建立一个socket连接的语句为:s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)对于UDP通

python网络编程学习笔记(一)_python

学习用书:<python 网络编程基础>作者John Goerzen 第一部分底层网络学习         Python提供了访问底层操作系统Socket接口的全部方法,需要的时候这些接口可以提供灵活而强有力的功能. (1)基本客户端操作         在<python 网络编程基础>一书中,作者列出了一个简单的Python客户端程序,具体如下: 复制代码 代码如下: import socket,sysport =70host=sys.argv[1] filename=sys.a

python网络编程学习笔记(三):socket网络服务器_python

1.TCP连接的建立方法 客户端在建立一个TCP连接时一般需要两步,而服务器的这个过程需要四步,具体见下面的比较. 步骤 TCP客户端 TCP服务器 第一步 建立socket对象  建立socket对象 第二步 调用connect()建立一个和服务器的连接 设置socket选项(可选) 第三步 无 绑定到一个端口(也可以是一个指定的网卡) 第四步 无 侦听连接 下面具体来讲这四步的建立方法: 第一步,建立socket对象:这里与客户端一样,依然是: s=socket.socket(socket.

python网络编程学习笔记(五):socket的一些补充_python

1.半开放socket 利用shutdown()函数使socket双向数据传输变为单向数据传输.shutdown()需要一个单独的参数,该参数表示了如何关闭socket.具体为:0表示禁止将来读:1 表示禁止将来写:2表示禁止将来读和写. 2.timeouts控制超时 调用socket的settimeout()函数,向其传递参数,表明超时时间设置.当访问一个socket,如果经过了参数设定的时间后,什么都没有发生,则会产生一个socket.timeout异常.例如:当程序运行后,会等待数据传入.

python网络编程学习笔记(六):Web客户端访问_python

6.1 最简单的爬虫 网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成.python的urllib\urllib2等模块很容易实现这一功能,下面的例子实现的是对baidu首页的下载.具体代码如下: 复制代码 代码如下: import urllib2page=urllib2.urlopen("http://www.baidu.com")print page.read() 6.2 提交表单数据 (1)用GET方法提交数据提交表单的GET方法是把表单数据

Unix网络编程 之 socket基础

基本结构 (这部分的地址均为网络地址<网络字节序>) 1.struct sockaddr:通用套接字地址结构     此结构用于存储通用套接字地址.    数据结构定义: typedef unsigned short sa_family_t; struct sockaddr { sa_family_t sa_family; /* address family, AF_xxx */ char sa_data[14]; /* 14 bytes of protocol address */ };  

python网络编程学习笔记(八):XML生成与解析(DOM、ElementTree)_python

xml.dom篇     DOM是Document Object Model的简称,XML 文档的高级树型表示.该模型并非只针对 Python,而是一种普通XML 模型.Python 的 DOM 包是基于 SAX 构建的,并且包括在 Python 2.0 的标准 XML 支持里. 一.xml.dom的简单介绍 1.主要方法: minidom.parse(filename):加载读取XML文件doc.documentElement:获取XML文档对象node.getAttribute(Attrib

python网络编程学习笔记(10):webpy框架_python

django和webpy都是python的web开发框架.Django的主要目的是简便.快速的开发数据库驱动的网站.它强调代码复用,多个组件可以很方便的以"插件"形式服务于整个框架,Django有许多功能强大的第三方插件,你甚至可以很方便的开发出自己的工具包.这使得Django具有很强的可扩展性.它还强调快速开发和DRY(Do Not Repeat Yourself)原则.webpy小巧,简单,实用,可以快速的完成简单的web页面.这里根据webpy Cookbook简要的介绍一下we

Socket网络编程学习笔记(3):利用套接字助手类

在上一篇中已经介绍了利用Socket建立服务端和客户端进行通信,如果需要 的朋友可访问<Socket网络编程学习笔记(2):面向连接的Socket>.在本篇 中,将利用C#套接字的助手类来简化Socket编程,使得刚刚接触到网络编程的 朋友们更容易上手. 跟上篇一样,通过C#套接字的助手类来编程同样分 服务端和客户端. 一.服务端侦听模式 1.创建套接字与 IPEndPoint绑定,并设置为侦听模式. 1//创建IPEndPoint实例 2 IPEndPoint ipep = new IPEn