[python網絡編程]利用socket編寫簡單的服務器
阿新 • • 發佈:2018-06-08
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編寫簡單的服務器