1. 程式人生 > >[python網絡編程]利用socket編寫簡單的服務器

[python網絡編程]利用socket編寫簡單的服務器

python網絡編程 arpinging 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)

接受客戶端連接

技術分享圖片

實例

腳本編寫

[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)

[python網絡編程]利用socket編寫簡單的服務器