8.14Day018網(wǎng)絡(luò)編程

網(wǎng)絡(luò)編程

socket

什么是socket編程

socket又叫套接字溯壶,指的是實現(xiàn)通信的兩個端;這兩個端又分為服務(wù)端套接字和客服端套接字

服務(wù)器套接字

python中提供了一個socket模塊來支持socket編程
# 1) 創(chuàng)建套接字對象(買電話機(jī))
socket(family=AF_INET, type=SOCK_STREAM)

family - 設(shè)置ip類型; AF_INET - ipv4, AF_INET6 - ipv6
type - 設(shè)置數(shù)據(jù)的傳輸方式; SOCK_STREAM - TCP, SOCK_DGRAM - UDP
server = socket.socket()


# 2) 綁定ip和端口(插電話線)
"""
bind((ip地址, 端口號))

ip地址 - 字符串; 服務(wù)器程序運行在哪臺計算機(jī)上,ip地址就寫哪臺計算機(jī)的ip
端口號 - 整型;范圍是0~65535茸塞,其中0~1024是著名端口躲庄,有自己特殊的意義一般不隨便用查剖。
"""
server.bind(('10.7.181.109', 8882))

# 3) 等待連接并且設(shè)置同一時間能夠接收的請求數(shù)量
server.listen(512)


# 4) 讓服務(wù)器保持一致運行的狀態(tài)
while True:
    print('開始監(jiān)聽')
    # 5) 接收請求(接電話)
    # 注意: 當(dāng)程序執(zhí)行到accept()的時候钾虐,會停下來直到有客戶端給當(dāng)前服務(wù)器發(fā)送請求為止
    connect, address = server.accept()
    print('接收到請求')
    print(connect, address)


    # 保持通話
    while True:
        # 6) 接收客戶端發(fā)送的數(shù)據(jù)(聽別人講電話)
        """
        recv(數(shù)據(jù)大小)  -  接收數(shù)據(jù)并且設(shè)置一次性能夠接收最大數(shù)據(jù)
        
        補充: 二進(jìn)制轉(zhuǎn)字符串
        二進(jìn)制對象.decode(encoding='utf-8')
        str(二進(jìn)制對象, encoding='utf-8')
        """
        recv_data = connect.recv(1024)
        # print('接收:', recv_data.decode(encoding='utf-8'))
        print('接收:', str(recv_data, encoding='utf-8'))

        # 7) 給客戶端發(fā)送數(shù)據(jù)(說話別人聽)
        """
        send(數(shù)據(jù))   -  發(fā)送數(shù)據(jù),數(shù)據(jù)的類型必須是bytes
        """
        # 發(fā)送一個網(wǎng)頁數(shù)據(jù)
        # with open('test.html', encoding='utf-8') as f:
        #     #     html = f.read()
        #     # message = 'HTTP/1.1 200 OK\r\n\r\n'+html
        #     # connect.send(message.encode())

        send_message = input('服務(wù)器:')
        connect.send(send_message.encode())

    # 8) 關(guān)閉連接(掛電話)
    connect.close()

客戶端套接字

import socket

# 1.創(chuàng)建套接字對象(買電話機(jī))
client = socket.socket()
# 2.發(fā)送請求(打電話)
"""
connect((ip地址, 端口號))
"""
client.connect(('10.7.181.109', 8882))

while True:


    # 3.發(fā)送消息
    send_message = input('客戶端:')
    client.send(send_message.encode())

    # 4.接收消息
    re_data = client.recv(1024)
    print(re_data.decode(encoding='utf-8'))

client.close()

圖片socket

from socket import *

server = socket()
server.bind(('10.7.181.109', 12346))
server.listen(512)

# 讓程序一直運行
while True:
    print('開始監(jiān)聽....')
    connect, address = server.accept()
    print(address)

    # 發(fā)送圖片
    with open('files/luffy.jpg', 'rb') as f:
        connect.send(f.read())

    connect.close()

圖片client

from socket import *

client = socket()
client.connect(('10.7.181.109', 12347))

# 圖片輸入較大數(shù)據(jù)笋庄,在TCP傳輸協(xié)議中會分段發(fā)送
while True:
    re_data = client.recv(1024)
    with open('files/new.jpg', 'ab') as f:
        f.write(re_data)

    if(len(re_data) < 1024):
        break
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末效扫,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子直砂,更是在濱河造成了極大的恐慌菌仁,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件静暂,死亡現(xiàn)場離奇詭異济丘,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)洽蛀,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進(jìn)店門摹迷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人郊供,你說我怎么就攤上這事峡碉。” “怎么了驮审?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵鲫寄,是天一觀的道長。 經(jīng)常有香客問我疯淫,道長地来,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任熙掺,我火速辦了婚禮靠抑,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘适掰。我一直安慰自己颂碧,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布类浪。 她就那樣靜靜地躺著载城,像睡著了一般。 火紅的嫁衣襯著肌膚如雪费就。 梳的紋絲不亂的頭發(fā)上诉瓦,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼睬澡。 笑死固额,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的煞聪。 我是一名探鬼主播斗躏,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼昔脯!你這毒婦竟也來了啄糙?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤云稚,失蹤者是張志新(化名)和其女友劉穎隧饼,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體静陈,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡燕雁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了鲸拥。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片拐格。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖崩泡,靈堂內(nèi)的尸體忽然破棺而出禁荒,到底是詐尸還是另有隱情,我是刑警寧澤角撞,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布呛伴,位于F島的核電站,受9級特大地震影響谒所,放射性物質(zhì)發(fā)生泄漏热康。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一劣领、第九天 我趴在偏房一處隱蔽的房頂上張望姐军。 院中可真熱鬧,春花似錦尖淘、人聲如沸奕锌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽惊暴。三九已至,卻和暖如春趁桃,著一層夾襖步出監(jiān)牢的瞬間辽话,已是汗流浹背肄鸽。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留油啤,地道東北人典徘。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像益咬,于是被迫代替她去往敵國和親逮诲。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內(nèi)容