利用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)
原文地址:http://blog.51cto.com/xiaowangzai/2126318
时间: 2024-10-11 18:04:54