python Socket网络编程
生活随笔
收集整理的這篇文章主要介紹了
python Socket网络编程
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
網絡調試助手:https://pan.baidu.com/s/1Do-v8XMDaIYJsXRQok5RhQ?提取碼:ya4g?(便于測試)
?? ? ? ?套接字(Socket)是計算機之間進行通信的一種約定。通過Socket,一臺計算機可以接受其他計算機的數據,也可以向其他計算機發送數據。遠程管理軟件和黑客軟件大多依賴于Socket來實現特定功能的,其包括兩個部分:運行于服務器端稱之為ServerSocket,運行于客戶機端稱之ClientSocket。
TCP
TCP是因特網中的傳輸層協議,使用三次握手協議建立連接
??
TCP_Client.py
import socketdef main():# 創建TCP套接字tcp_client_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)# 服務器地址sever_ip = input("請輸入服務器ip:")sever_port = input("請輸入服務器端口:")# 連接服務器(元組)tcp_client_socket.connect((sever_ip,int(sever_port)))# 輸入發送的數據data = input("請輸入要發送的數據:")# 發送數據tcp_client_socket.send(data.encode("utf-8"))#接收數據recv_data = tcp_client_socket.recv(1024)print("對方的回復:"recv_data.decode("utf-8"))if __name__ == '__main__':main()nc -lvp 8888?監聽8888端口?
(一次完整對話)
?
?TCP_Sever.py?
?
import socketdef main():# 創建套接字tcp_server_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)# 綁定本地IP和端口tcp_server_socket.bind(("192.168.12.1",8888))# 被動 listentcp_server_socket.listen(128)while True:# 等待客戶端信息print("等待客戶端連接")client_socket,client_addr = tcp_server_socket.accept()print("客戶端為:",client_addr)#接收對方發送數據recv_data = client_socket.recv(1024)print("接收到信息為:",recv_data.decode("utf-8"))#發送數據到客戶端client_socket.send("Yasso".encode("utf-8"))client_socket.close()if __name__ == "__main__":main()?
UDP
UDP 為應用程序提供了一種無需建立連接就可以發送封裝的 IP 數據包的方法。
?
UDP_Client_send.py?
import socket #創建udp套接字 udp_socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) # 目標ip和端口 target_addr = ('192.168.12.128',8888)#獲取數據 data = input("請輸入要發送的數據:")#發送數據 udp_socket.sendto(data.encode('utf-8'),target_addr)udp_socket.close()UDP_Client_receive.py?
import socket #創建udp套接字 udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)local_addr=('192.168.12.128',8888) #綁定ip(必須本地)和端口 udp_socket.bind(local_addr)#等待接受對方發送的數據 recv_data = udp_socket.recvfrom(1024) #表示本次接受的最大字節數1024# 顯示接受的數據 print(recv_data[0].decode('utf-8')) udp_socket.close()?liunx等待接受數據->win10發送數據->liunx成功接收數據
nc -ulp 8888?監聽udp模式下的8888端口?
私密聊天室
# UDP應用-私密聊天室(極簡) import socketdef send(chat_ip,chat_port):udp_socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)"""發送消息"""address = (chat_ip,int(chat_port))print(address)data = input("請輸入發送的消息:")udp_socket.sendto(data.encode("utf-8"),address)def receive():"""接收消息"""udp_socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)# 綁定本地IP和端口udp_socket.bind(("192.168.12.1",8888))recv_data = udp_socket.recvfrom(1024)print(recv_data[0].decode('utf-8'))def main():chat_ip = input("請輸入您聊天對方IP地址:")chat_port = input("請輸入您聊天對方端口:")# 循環調用while True:print("++++++歡迎進入私密聊天室++++++")print("0:發送消息")print("1:接收消息")print("2:退出聊天")function = input("請輸入您要用的模塊")if function == "0":send(chat_ip,chat_port)elif function == "1":receive()elif function == "2":breakelse:print("輸入有誤,請重新輸入")if __name__ == '__main__':main()總結
以上是生活随笔為你收集整理的python Socket网络编程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机操作系统(10):集群和分布式
- 下一篇: python按内容分割txt文件_pyt