python中的socket網路程式設計(二)
在python中的socket網路程式設計(一)一文中,我們介紹了客戶端的主要功能。下面我們看下服務端。
建立socket:
首先要建立 socket,用 python 中 socket 模組的函式 socket 就可以完成:
#-*- coding: utf-8 -*-
import socket
s = socket.socket(socket.af_inet,socket.sock_stream)
print 'socket created'
繫結socket:
函式 bind 可以用來將 socket 繫結到特定的位址和埠上,它需要乙個 sockaddr_in 結構作為引數。
# -*- coding: utf-8 -*-
import socket
import sys
sys
host = 『』
port = 8888
s = socket.socket(socket.af_inet, socket.sock_stream)
print 'socket created'
try:
s.bind((host, port))
except socket.error , msg:
print 'bind failed. error code : ' + str(msg[0]) + ' message ' + msg[1]
sys.exit()
print 'socket bind complete'
監聽連線:
函式 listen 可以將 socket 置於監聽模式。
s.listen(10)
print 'socket now listening'
該函式帶有乙個引數稱為 backlog,用來控制連線的個數。如果設為 10,那麼有 10 個連線正在等待處理,此時第 11 個請求過來時將會被拒絕。
接收連線,當有客戶端向伺服器傳送連線請求時,伺服器會接收連線。
conn, addr = s.accept()
print 'connected with ' + addr[0] + ':' + str(addr[1])
為了處理每個連線,我們需要將處理的程式與主程式的接收連線分開。一種方法可以使用執行緒來實現,主服務程式接收連線,建立乙個執行緒來處理該連線的通訊,然後伺服器回到接收其他連線的邏輯上來。完整的服務端**如下:
import socket
import sys
from thread import *
host = ''
port = 8888
s = socket.socket(socket.af_inet, socket.sock_stream)
print 'socket created'
try:
s.bind((host, port))
except socket.error , msg:
print 'bind failed. error code : ' + str(msg[0]) + ' message ' + msg[1]
sys.exit()
print 'socket bind complete'
s.listen(10)
print 'socket now listening'
def clientthread(conn):
conn.send('welcome to the server. type something and hit enter\n')
while true:
data = conn.recv(1024)
reply = 'ok...' + data
if not data:
break
conn.sendall(reply)
conn.close()
while 1:
conn, addr = s.accept()
print 'connected with ' + addr[0] + ':' + str(addr[1])
start_new_thread(clientthread ,(conn,))
s.close()
在命令列下執行python server.py,服務端執行結果如下:
[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-usvk7srf-1593526582866)(
我們使用tcp/udp socket測試工具,模仿客戶端。向服務端傳送字串,服務端接收字串,然後返回。效果如下:
[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-whygzbyk-1593526582869)(
python網路程式設計服務端,我們需要經過如下五步:
python中Socket的使用
前一段時間學習python網路程式設計,完成簡單的通過python實現網路通訊的功能。現在,將python中socket 通訊的基本實現過程做乙個記錄備份.python 中的socket通訊較為簡單,僅需要幾行 就可實現。和一般的網路通訊一樣,通訊方式分為udp和tcp兩種方式,兩種方式的處理也略有...
python中的Socket模組
socket模組的主要目的是幫助在網路上的兩 個程式之間建立資訊通道。在python中提供了兩個基本的socket模組 服務端socket和客戶端socket。當建立了乙個服務端socket之後,這個socket就會在本機的乙個埠上等待連線,客戶端socket會訪問這個埠,當兩者完成連線之後,就可以...
python中的socket模組
熟悉了一下python的socket模組,感覺還是有點好玩的,不過坑也也是不少的。1 伺服器端 usr bin env python import socket host 192.168.1.60 port 55555 s socket.socket s.bind host,port s.liste...