1. 程式人生 > >python網絡編程之socket

python網絡編程之socket

socket 本地 log ret 關閉連接 sock sco ket utf

  socket

  應用層和tcp,ucp協議之間的一個接口,用戶只需操作接口,復雜的數據組織工作由其內部自行完成。

  TCP協議的socket(套接字):

    服務端

import socket
sk = socket.socket()  # 創建一個套接字對象
sk.bind((127.0.0.1, 8080))  # 綁定本地IP地址和端口
sk.listen()     # 監聽

conn, address = sk.accept()   # 創建連接


while True:
    ret = conn.recv(1024)   # 接收數據  需要指定接收字節數
    if
ret == bbye: conn.send(ret) break print(ret.decode(utf-8)) info = input(>>>).encode(utf-8) conn.send(info) # 發送數據 必須是bytes類型 conn.close() # 關閉連接 sk.close() # 關閉套接字

    客戶端

import socket
sk = socket.socket()  # 創建套接字
sk.connect((127.0.0.1, 8080))  #
連接服務端 while True: info = input(>>>).encode(utf-8) sk.send(info) # 發送數據 ret = sk.recv(1024) # 接收數據 if ret == bbye: break print(ret.decode(utf-8)) sk.close() # 關閉套接字

  UDP協議的scoket(套接字):

    服務端

import socket
sk = socket.socket(type=socket.SOCK_DGRAM)  #
創建ucp套接字對象 sk.bind((127.0.0.1, 8080)) # 綁定IP和端口 msg, address = sk.recvfrom(1024) # 等待接收數據 ucp必須先接收數據 print(msg.decode(utf-8)) sk.sendto(bhello, address) # 發送數據 要攜帶發送數據的地址 sk.close()

    客戶端

import socket
sk = socket.socket(type=socket.SOCK_DGRAM)  # 創建ucp套接字對象
ip_port = (127.0.0.1, 8080)  # 指定服務端IP和端口

sk.sendto(bhi, ip_port)  # 發送數據到指定服務端
msg, address = sk.recvfrom(1024)  # 接收返回的數據
print(msg.decode(utf-8))


sk.close()

  

python網絡編程之socket