python中的socket網路程式設計 二

2021-10-07 15:52:35 字數 2536 閱讀 9102

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...