1. 程式人生 > >python 學習總結3

python 學習總結3

今天 pre 小程序 brush mas 返回 等待 add 學習總結

今天學習了socket的一些知識,主要為socket模塊中socket()類及其父類的一些方法

只要包括:

sock=socket.socket()

sk.bind(address)  #綁定自己的套接字信息

sk.listen([backlog]) #保持監聽,直到有連接信息

sk.accept() #接收連接,並返回(socket object, address info)信息
sk.connect(address) #根據套接字信息連接對方的套接字

sk.sendall(string) #向對方發送信息,但必須為字節

sk.recv(bufsize) #接收對方的信息

sk.close() #關閉套接字

  

根據以上方法,我寫了一個聊天小程序,如下

服務端

import socket

sock=socket.socket()
sock.bind((‘127.0.0.1‘,8001))

#保持監聽
sock.listen(5)
while 1:
    #等待對方的連接
    con,address=sock.accept()

    #連接成功後向對方發送請求信息
    con.sendall(bytes(‘對方已在線,請輸入信息,當輸入q時斷開連接‘,encoding=‘utf-8‘))

    #開始聊天
    while 1:

        #接收信息
        ming=con.recv(1024)
        xiao_ming=str(ming,encoding=‘utf-8‘)

        #對方斷開連接
        if xiao_ming==‘q‘:
            print(‘對方(小明)已斷開連接‘)
            break

        print(‘小明(對方):‘+xiao_ming)

        #發送信息
        hong=input(‘小紅(你)  :‘)
        con.sendall(bytes(hong,encoding=‘utf-8‘))

客戶端

import socket
soc=socket.socket()

#根據地址信息連接對方
soc.connect((‘127.0.0.1‘,8001))

#接收對方的請求信息
mas=soc.recv(1024)
massage=str(mas,encoding=‘utf-8‘)
print(massage)

#開始聊天
while 1:
    #發送信息
    ming=input(‘小明(你)  :‘)
    soc.sendall(bytes(ming,encoding=‘utf-8‘))

    #斷開連接條件
    if ming==‘q‘:
        print(‘你已斷開連接,若想發送信息請重新連接‘)
        break

    #接收信息
    hon=soc.recv(1024)
    hong=str(hon,encoding=‘utf-8‘)
    print(‘小紅(對方):‘+hong)

soc.close()

  在調試過程中,發現自己與自己對話真是一種奇妙與悲哀的感覺

python 學習總結3