python设置Internet_python简单网络服务器
服务器建立TCP连接的过程有4步
1、实例化一个socket对象
sock = socket.socket(socket.F_INET,socket.SOCK_STREAM)
2、设置或得到socket选项
python定义了setsockopt()和getsockopt(),一个是设置选项,一个是得到设置。这里主要使用setsockopt(),设置socket选项的结构为:
setsockopt(level,optname,value),参数表示:选项,意义,期望值
level==SOL_SOCKET,表示正在使用的socket选项
optname,如果level选择SOL_SOCKET,那么optname可以选择:
SO_BINDTODEVICE:可以使socket只在某个特殊的网络接口(网卡)有效。也许不能是移动便携设备;一个字符串给出设备的名称或者一个空字符串返回默认值
SO_BROADCAST:允许广播地址发送和接收信息包。只对UDP有效。如何发送和接收广播信息包;布尔型整数
SO_DONTROUTE:禁止通过路由器和网关往外发送信息包。这主要是为了安全而用在以太网上UDP通信的一种方法。不管目的地址使用什么IP地址,都可以防止数据离开本地网络;布尔型整数
SO_KEEPALIVE:可以使TCP通信的信息包保持连续性。这些信息包可以在没有信息传输的时候,使通信的双方确定连接是保持的;布尔型整数
SO_OOBINLINE:可以把收到的不正常数据看成是正常的数据,也就是说会通过一个标准的对recv()的调用来接收这些数据;布尔型整数
SO_REUSEADDR:当socket关闭后,本地端用于该socket的端口号立刻就可以被重用。通常来说,只有经过系统定义一段时间后,才能被重用;布尔型整数,本次使用它
sock.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
这里value设置为1,表示将SO_REUSEADDR标记为TRUE,操作系统会在服务器socket被关闭或服务器进程终止后马上释放该服务器的端口,否则操作系统会保留几分钟该端口
3、绑定socket
sock.bind(('127.0.0.1',8001))
4、侦听连接
sock.listen(5)
5、代码汇总
import socket sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM) sock.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) sock.bind(("127.0.0.1",8001)) sock.listen(10) while True: conn,addr = sock.accept() buff = conn.recv(2048) print(buff) conn.send(b"HTTP/1.1 200 ok \r\n\r\n") conn.send(b"hello world!") conn.close() sock.close()