2019-08-14day18總結(jié)網(wǎng)絡(luò)編程

一、socket server

#!/user/bin/env python
# -*- coding:utf-8 -*-
import socket

# 1.什么是socket編程
# socket又叫套接字,指的是實(shí)現(xiàn)通信的兩個(gè)端;
# 這兩個(gè)端又分為服務(wù)器套接字和客戶端套接字

# 2.服務(wù)器套接字
# python中提供了一個(gè)socket模塊來支持socket編程

# 1)創(chuàng)建套接字對(duì)象
# 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地址, 端口號(hào)))
# ip地址  - 字符串;服務(wù)器程序運(yùn)行在哪臺(tái)計(jì)算機(jī)上,ip地址就寫哪臺(tái)計(jì)算機(jī)的ip
# 端口號(hào)   - 整型:范圍是0-65535,0-1024有自己特殊服務(wù),一般不亂用

server.bind(('10.7.181.120', 1029))

# 3)等待連接,設(shè)置同時(shí)能接收的請(qǐng)求數(shù)
server.listen(95)

# 4)讓服務(wù)器保持運(yùn)行狀態(tài)
while True:
    # 5)接收請(qǐng)求
    # 注意:當(dāng)程序執(zhí)行到accept()的時(shí)候,會(huì)停下來直到有客戶端給當(dāng)前服務(wù)器發(fā)送請(qǐng)求位置
    connect, address = server.accept()
    print(connect, address)
    while True:
        # 6)接收客戶端發(fā)送的數(shù)據(jù)
        # recv(數(shù)據(jù)大小)  - 接收數(shù)據(jù)并且一次性能夠接收的最大數(shù)據(jù)
        recv_data = connect.recv(1024)
        # 補(bǔ)充:二進(jìn)制轉(zhuǎn)字符串
        # 二進(jìn)制.decode()
        # str(二進(jìn)制對(duì)象, )
        print('客戶端:', recv_data.decode(encoding='utf-8'))
        # print('接收:', str(recv_data, encoding='utf-8'))

        # 7)給客戶端發(fā)送數(shù)據(jù)
        # send(數(shù)據(jù))  數(shù)據(jù)的類型必須是bytes
        send_message = input('服務(wù)器:')
        connect.send(send_message.encode())


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

二、socket client

#!/user/bin/env python
# -*- coding:utf-8 -*-

import socket

# 1.創(chuàng)建套接字對(duì)象
client = socket.socket()

# 2.發(fā)送請(qǐng)求
# connect((ip地址, 端口號(hào)))
client.connect(('10.7.181.120', 1029))

while True:
    # 3.發(fā)送消息
    send_massage = input('客戶端:')
    if send_massage:

        client.send(send_massage.encode())

        # 4.接收消息
        re_data = client.recv(1024)
        print('服務(wù)器:', re_data.decode(encoding='utf-8'))

    elif send_massage == exit:
        break


client.close()
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容