python核心第三版之網絡編程

創建TCP服務器僞代碼:

    s = socket()                    #創建服務器套接字

    s.bind()                        #套接字與地址綁定

    s.listen()                      #監聽連接

    inf_loop:                       #服務器無限循環

        cs = s.accept()             #接受客戶端連接,如果沒有連接,則阻塞

        comm_loop:                  #通信循環

            cs.recv() / cs.send()   #會話 

        cs.close()                  #關閉客戶端套接字

    s.close()                       #關閉服務器套接字

以下是代碼:

#!/usr/bin/env python3
# encoding: utf-8

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)

while True:
    print('waiting for connection...')
    tcpCliSock, addr = tcpSerSock.accept()
    print('...connected from:', addr)

    while True:
        data = tcpSerSock.recv(BUFSIZE)
        if not data:
            break
        tcpSerSock.send('[%s] %s' % (bytes(ctime(), 'uft-8'), data))

    tcpSerSock.close()
tcpSerSock.close()

相應地創建TCP客戶端僞代碼:

    cs = socket()

    cs.connect()

    comm_loop:                      #通信循環

            cs.recv() / cs.send()   #會話 

    cs.close()                  #關閉客戶端套接字

以下是實現代碼:

#!/usr/bin/env python

# encoding: utf-8


from socket import *


HOST = '192.168.184.130'

PORT = 21567

BUFSIZE = 1024

ADDR = (HOST, PORT)


tcpCliSock = socket(AF_INET, SOCK_STREAM)

tcpCliSock.connect(ADDR)

while True:

    data = input('>')

    if not data:

        break

    tcpCliSock.send(data)

    data = tcpCliSock.recv(BUFSIZE)

    if not data:

        break

    print(data)

tcpCliSock.close()

在這個最簡單的服務器套接字程序基礎上,可以充分地擴充。

        

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章