python简单网络服务器

对于服务器来说建立TCP连接的过程分为4步:

1.建立socket对象:这里与客户端一样,依然是:

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

2.设置和得到socket选项

python定义了setsockopt()和getsockopt(),一个是设置选项,一个是得到设置。这里主要使用setsockopt(),具体结构如下:

setsockopt(level,optname,value)

level定义了哪个选项将被使用。通常情况下是SOL_SOCKET,意思是正在使用的socket选项。它还可以通过设置一个特殊协议号码来设置协议选项,然而对于一个给定的操作系统,大多数协议选项都是明确的,所以为了简便,它们很少用于为移动设备设计的应用程序。

optname参数提供使用的特殊选项。关于可用选项的设置,会因为操作系统的不同而有少许不同。如果level选定了SOL_SOCKET,那么一些常用的选项见下表:


选项


意义


期望值


SO_BINDTODEVICE


可以使socket只在某个特殊的网络接口(网卡)有效。也许不能是移动便携设备


一个字符串给出设备的名称或者一个空字符串返回默认值


SO_BROADCAST


允许广播地址发送和接收信息包。只对UDP有效。如何发送和接收广播信息包


布尔型整数


SO_DONTROUTE


禁止通过路由器和网关往外发送信息包。这主要是为了安全而用在以太网上UDP通信的一种方法。不管目的地址使用什么IP地址,都可以防止数据离开本地网络


布尔型整数


SO_KEEPALIVE


可以使TCP通信的信息包保持连续性。这些信息包可以在没有信息传输的时候,使通信的双方确定连接是保持的


布尔型整数


SO_OOBINLINE


可以把收到的不正常数据看成是正常的数据,也就是说会通过一个标准的对recv()的调用来接收这些数据


布尔型整数


SO_REUSEADDR


当socket关闭后,本地端用于该socket的端口号立刻就可以被重用。通常来说,只有经过系统定义一段时间后,才能被重用。


布尔型整数

本节在学习时,用到了SO_REUSEADDR选项,具体写法是:

S.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) 这里value设置为1,表示将SO_REUSEADDR标记为TRUE,操作系统会在服务器socket被关闭或服务器进程终止后马上释放该服务器的端口,否则操作系统会保留几分钟该端口。

3.绑定socket

绑定即为服务器要求一个端口号。

S.bind((host,port)),其中host为服务器ip,通常为空,也可以绑定到一个特定的ip地址。Port为端口号。

4.侦听连接。

利用listen()函数进行侦听连接。该函数只有一个参数,其指明了在服务器实际处理连接的时候,允许有多少个未决(等待)的连接在队列中等待。作为一个约定,很多人设置为5。如:s.listen(5)

[python] view plaincopyprint?

  1. import socket
  2. host = ‘‘
  3. port = 80
  4. print "Create socket"
  5. s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  6. print "done"
  7. print "Set the socket options"
  8. s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
  9. print "done"
  10. print "Build to port and interface"
  11. s.bind((host, port))
  12. print "done"
  13. print "Listen for connection"
  14. s.listen(5)
  15. print "Connect from ", s.getsockname()
时间: 2024-10-27 04:47:29

python简单网络服务器的相关文章

Python简单网络爬虫实战—下载论文名称,作者信息(下)

在Python简单网络爬虫实战—下载论文名称,作者信息(上)中,学会了get到网页内容以及在谷歌浏览器找到了需要提取的内容的数据结构,接下来记录我是如何找到所有author和title的 1.从soup中get到data类 soup中提供了select方法来筛选所需的类.该方法使用方法如下: articlename = soup.select('title') 该语句即将soup中所有的title元素放到articlename中.select也有其他用法 articlename = soup.s

一个简单网络服务器类的实现

网络服务器,顾名思义是一个可以接受连接的host,我们要实现的网络服务器类是一个 1.能够实现多个连接 2.仅仅通过继承或实现网络服务器类(或接口)的处理就能实现不同的连接功能 3.当服务器关闭时,已有建立的私有连接不被中断,但服务器不在接受新的连接 针对以上功能我们分解一下要实现的模块: 1.多线程实现多个连接,当serverSocket accept到一个连接请求时,开启一个独立的线程 2.实现这个,要求上面新建线程能被网络服务器锁管理 3.服务器不接受其他连接,可以用线程中断做,私有连接能

python简单网络连接

聊天模式 client端 import socket sk = socket.socket() address = ('172.16.10.1',3000) sk.connect(address) while True: inp = input('>>>') if inp == 'exit': break sk.send(bytes(inp,'utf8')) data = sk.recv(1024) print(str(data,'utf8')) sk.close() #client端结

建立简单网络服务器

对于一个客户端来说建立一个TCP连接分为两步,包括建立socket对象以及调用connect()来建立一个和服务器的连接. 对于服务器需要四步: 建立socket对象: s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 2.设置socket选项(可选) s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) #把socket设置成可复用的 3.绑定一个端口,同样也可以制定个一个网卡!

[python网络编程]利用socket编写简单的服务器

利用socket编写简单的服务器 步骤解析 建立socket对象 这一步跟我们上次使用socket做客户端是一样的,都需要有一个socket连接 s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) 设置socket选项(setsockopt) 选项介绍setsockopt(set socket option),参数设置格式:setsockopt(level,optname,value) 各选项的关系:1.level:level的设定决定了op

使用Python SocketServer快速实现多线程网络服务器

Python SocketServer使用介绍 1.简介:          SocketServer是python的一个网络服务器框架,可以减少开发人员编写网络服务器程序的工作量. SocketServer总共有4个server基类. TCPServer:负责处理TCP协议. UDPServer:负责处理UDP协议. UnixStreamServer:只适用于类unix平台,不常用. UnixDatagramServer:只适用于类unix平台,不常用. 这4个类会同步处理每一个request

Socket网络编程--简单Web服务器(1)

这一次的Socket系列准备讲Web服务器.就是编写一个简单的Web服务器,具体怎么做呢?我也不是很清楚流程,所以我找来了一个开源的小的Web服务器--tinyhttpd.这个服务器才500多行的代码,使用C语言.这一小节就不讲别的内容了.就对这个程序进行一些注释和讲解了. 主函数: 1 int main(void) 2 { 3 int server_sock = -1; 4 u_short port = 0; 5 int client_sock = -1; 6 struct sockaddr_

python网络爬虫入门(二)——用python简单实现调用谷歌翻译

最近在看国外的文档,有些生词不认识.就用谷歌翻译来理解,用着用着闲来无事就按F12查看了下页面的源代码.发现可以用python简单的实现下谷歌翻译的页面功能.于是先上网搜下有没有类似的文章博客,发现几篇不错的,于是参考其他代码与自己的思路,简单的实现了下翻译的功能,代码如下: import re import urllib,urllib2 #----------模拟浏览器的行为,向谷歌翻译发送数据,然后抓取翻译结果,这就是大概的思路------- def Gtranslate(text): #t

[UNIX网络编程] sun rpc实现的简单echo服务器

RPC的全称是Remote Procedure Call,它能够在本地以函数调用的形式来实现网络操作,让程序员集中关注于业务逻辑,不用关心底层的数据通信. 这里不会详细讲解RPC的原理,而是用一个简单的echo服务器的例子来说明如何使用RPC. 最早实现的RPC是sun rpc,现在它已经移植到了大多数操作系统. 使用RPC,程序员只需要关注客户与服务器之间数据传送的格式以及如何远程过程的定位,客户端如何调用本地函数以调用远程函数,服务器远程过程的实现. 1 客户端与服务器之间数据的交互 客户与