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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[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可以使用的常用选项有:

技术分享图片
技术分享图片

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

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

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

侦听连接(listen)

侦听绑定好的IP:PORT

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

接受连接(accept)

接受客户端连接

技术分享图片

实例

脚本编写

[[email protected] 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

[[email protected] network]# 

运行程序

[[email protected] network]# python socket_server.py 

查看监听端口

[[email protected] ~]# 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   
[[email protected] ~]# 

客户端连接

telnet 192.168.128.128 1234

查看服务器端反应

[[email protected] network]# python socket_server.py 
Got connection from (‘192.168.128.1‘, 2839)

以上是关于[python网络编程]利用socket编写简单的服务器的主要内容,如果未能解决你的问题,请参考以下文章

Python的网络编程socket

Python网络编程-Socket简单通信

Python Socket Client及Server简单编程

SOCKET编程进阶

SOCKET编程进阶

使用python完成一个hello/hi的简单的网络聊天程序