[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的设定决定了optname可以使用的选项
2.optname:由level决定
3.value:由level和optname决定


选项
level:SOL_SOCKET
level为SOL_SOCKET的时候,optname可以使用的常用选项有:

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

绑定地址和端口号(绑定socket)

作为服务器,如果提供访问的话,必须要有一个IP地址和端口号供客户端访问。

# 绑定地址为192.168.128.128 端口号为 12345
s.bind(('192.168.128.128',12345))

侦听连接(listen)

侦听绑定好的IP:PORT

# 5 代表着允许5个连接在队列中等待。
s.listen(5)

接受连接(accept)

接受客户端连接

流程图

实例

脚本编写

[root@arppinging network]# cat socket_server.py 
#!/usr/bin/env python
# 导入socket模块
import socket
# 配置host和port
host = '192.168.128.128'
port = 1234

# 新建一个socket连接
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
# 设置socket参数

s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
# 绑定IP和端口
s.bind((host,port))
# 监听
s.listen(5)
# 用while循环一直接受连接,如果不配置while循环,程序执行一次就退出了
while 1:
                # 接受连接,并把客户端的连接信息赋值给clientsock,和clientaddr
        clientsock,clientaddr = s.accept()
                # 打印客户端的信息
        print "Got connection from",clientsock.getpeername()
        # 关闭连接
                clientsock.close

[root@arppinging network]# 

运行程序

[root@arppinging network]# python socket_server.py 

查看监听端口

[root@arppinging ~]# netstat -ant | grep 1234
tcp        0      0 192.168.128.128:1234        0.0.0.0:*                   LISTEN      
tcp        0      0 192.168.128.128:1234        192.168.128.128:33232       TIME_WAIT   
[root@arppinging ~]# 

客户端连接

telnet 192.168.128.128 1234

查看服务器端反应

[root@arppinging network]# python socket_server.py 
Got connection from ('192.168.128.1', 2839)

猜你喜欢

转载自blog.51cto.com/xiaowangzai/2126318