Web入門 建立TCP伺服器

2021-09-12 10:54:56 字數 2457 閱讀 4515

from socket import *

from time import ctime

host = ''

port = 21567

bufsize = 1024

addr = (host, port)

tcpsersock = socket(af_inet, sock_stream) # 建立伺服器套接字

tcpsersock.bind(addr) # 繫結埠, 類似於接線動作

tcpsersock.listen(5) # 最多監聽連線:5

while true:

print('waiting for connection...')

tcpclisock, addr = tcpsersock.accept() # 接受客戶端連線

print('...connected from: ', addr)

while true:

data = tcpclisock.recv(bufsize) # 接受buffsize大小的資料

if not data:

break

# data = bytes(data, encoding="utf-8") # str-->>bytes

str_add = 'i am your server.\n'

str1 = str_add + '[%s] %s' % (bytes(ctime(), 'utf-8'), data)

tcpclisock.send(str1.encode()) # str.encode() str-->>bytes

tcpclisock.close()

tcpsersock.close()

理解:tcp伺服器套接字是乙個object class,變數tcpsersock 是乙個socket的instance,後面的.bind(), .listen 是tcpsersock的動作, bind()是「接線」動作, listen()是監聽動作。其中, tcpsersock.accept()得到來訪的客戶資訊, 在後面的while loop 中, 和客戶進行交流。這些動作必須有先後順序。

小筆記:

str型別資料轉化為bytes型別資料: str.encode('utf-8')     bytes(string, encoding='utf-8')  

bytes型別資料轉換為str型別資料: bytes.decode(bytes, 'utf-8')     str(bytes, encoding='utf-8')

# -*- coding: utf-8 -*-

"""@author: leo

"""from socket import *

host = 'localhost'

port = 21567

bufsize = 1024

addr = (host, port)

tcpclisock = socket(af_inet, sock_stream)

tcpclisock.connect(addr)

while true:

data = input('>>>')

if not data:

break

data = bytes(data, encoding="utf-8") # str -->> bytes

tcpclisock.send(data)

data = tcpclisock.recv(bufsize)

if not data:

break

# print(data.decode('utf-8'))

data = str(data, encoding='utf-8') # bytes -->> str

print(data, type(data))

tcpclisock.close() # 關閉客戶端

客戶端與伺服器通過套接字, 和host, port變數所確定的埠,進行通訊。

我把這個"口", 比作學校牆外的小賣部在學校牆上鑿的洞, 小賣部是伺服器, 買早餐的學生是客戶端。 小賣部伺服器和客戶端學生同時在同乙個洞(通訊位址一致)前時, 購買協議, 語言描述的物品才有了交換的意義。

在建立伺服器的**中tspsersock.accep()返回的值tcpclisock, 和建立客戶端**中的客戶端變數tcpclisock, 描述的分別是小賣部伺服器眼中的洞, 和客戶端學生眼中洞。在對於兩者tcpclisock.send()都是往洞裡放交易的物品(速食麵或者紅票票),tcpclisock.recv()對於兩者而言都是從洞中取出牆的另一側人放入的東西。

總結一下: tcp協議是乙個牆上的洞,牆裡牆外的人通過同時在動乙個洞前, 做一些動作, 完成物品交換(資訊交換) 

簡單TCP伺服器建立

簡單tcp伺服器建立 實現tcp伺服器的建立,實現迴圈與客戶端聊天,並且獲取客戶端資訊.tcp程式設計步驟 1 建立套接字socket 買手機.2 套接字繫結 bind 繫結手機卡.3 監聽套接字 listen 等待其他人打 4 接受客戶端請求 accept 接 進行資料的互動過程.通話內容.5 關...

swoole 建立tcp伺服器

server.php 建立tcp伺服器 date 2019 1 15 serv new swoole server 127.0.0.1 9501 監聽連線進入事件 serv on connect function serv,fd 監聽資料接收事件 serv on receive function s...

輕鬆建立Web伺服器

我想有個家,乙個不需要華麗的地方 對於想建網上家園的你來說是否對這首歌更有一番感觸?裝了寬頻之後,我們完全可以把自己的電腦作成web伺服器,感受一下擁有幾十gb空間,cgi php asp等都支援的網上豪宅。心急喝不了熱粥,呵呵,首先還是來簡單了解一下有關web服務的基礎知識。基礎篇web伺服器 在...