Python-簡單socket的服務端和客戶端


基於tcp協議

服務端:

import socket
sk = socket.socket()  # 實例化一個對象
sk.bind(('127.0.0.1',9000))  # 綁定一個地址 ip+端口號 括號里面必須時元組的形式
# 127.0.0.1 表示的本機地址,不過交換機的,只是為了排除一些網絡問題,端口號一般寫9000之后的數
sk.listen()  # 表示開始監聽
conn,addr = sk.accpet()  # 接受一個鏈接請求
# conn 是一個對象,addr是請求對象的地址
# conn.send(b'hello')  # 給請求對象發送hello
conn.send('hello'.encode('utf-8'))  # 推薦使用
# conn.send('你好'.encode('utf-8'))  # 發送中文時只能用這個
msg = conn.recv(1024).decode('utf-8')  # 接受客戶端發來的消息
print(msg)
conn.close()  # 與對方的信息傳遞結束
sk.close()  # 關閉

客戶端:

import socket
sk = socket.socket()
sk.connect(('127.0.0.1',9000))
msg = sk.recv(1024).decode('utf-8')  # 最多接受1024字節
print(msg)
sk.send('你好'.encode('utf-8'))
sk.close()

 基於udp協議

服務端:

# import socket
# sk = socket.socket(type=socket.SOCK_DGRAM)
from socket import socket,SOCK_DGRAM
sk = socket(type=SOCK_DGRAM)
sk = bind(('127.0.0.1',9000))
while True:
    msg,cli_addr = sk.recvfrom(1024)
    # print(msg,cli_addr)  # cli_addr 為客戶端的地址
    print(msg.encode('utf-8'))
    if msg.encode('utf-8').upper() == 'Q':
        continue
    content = input('>>>')
    sk.sendto(content.encode('utf-8'),cli_addr)

客戶端:

from socket import socket,SOCK_DGRAM
sk = socket(type=SOCK_DGRAM)
server_addr = ('127.0.0.1',9000)  # 服務端地址
while True:
    content = input('>>>')
    if content.upper() == 'Q':
        break
    sk.sendto(content.encode('utf-8'),server_addr)
    msg = sk.recv(1024)
    print(msg.decode('utf-8'))

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM