client端服務器
import socket sk=sk.socket.socket() sk.connect(('127.0.0.1',9000)) while True: inp=input(">>>") sk.send(inp.encode('utf-8')) if inp=='q':break ret=sk.recv(1024).decode('utf-8') if ret=='q':break print(ret) sk.close()
server端socket
import socket sk=sk.socket.socket() sk.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEDDR,1) sk.bind(('127.0.0.1',9000)) sk.listen() #參數n表示同一時間能夠有n個連接等待與server端通訊 while True: conn,addr=sk.accept() while True: ret=conn.recv(1024).decode('utf-8') if ret=='q':break print(ret) inp=input('>>>') conn.send(inp.encode('utf-8')) if inp=='q':break conn.close() sk.close() # tcp協議適用於 文件的上傳和下載 發送郵件 發送重要的文件 # 每和一個客戶端創建連接 都會在本身的操做系統上佔用一個資源 # 同一時間 只能 和一個客戶端通訊
client端tcp
import socket sk=socket.socket(type=socket.SOCK_DGRAM) name=input('name:') while True: inp=input('>>>') sk.sendto(('%s:%s'%(name,inp)).encode('utf-8'),('127.0.0.1',9090)) msg,addr=sk.recvfrom(1024) print(msg.decode('utf-8')) sk.close()
server端ide
import socket lst={'egon':'\033[1;31m','yuan':'\033[1;34m'} sk=socket.socket(type=socket_DGRAM) sk.bind(('127.0.0.1',9090)) while True: msg,client_addr=sk.recvfrom(1024) name,msg=msg.decode('utf-8').spilt(':') color=lst.get(name.strip(),'') print('%s%s\033[0m'%(color,msg.decode('utf-8'))) inp=input('>>>') sk.sendto(inp.encode('utf-8'),client_addr) sk.close()
mysocketspa
from socket import * class Mysocket(socket): def __init__(self,coding='utf-8'): super().__init__(type=SOCK_DGRAM) self.coding=coding def my_recv(self,num): msg,addr=self.recvfrom(num) return msg.decode(self.coding),addr def my_send(self,msg,addr): return self.sendto(msg.encode(self.coding),addr)
client端操作系統
from mysocket import Mysocket sk = Mysocket() while True: inp = input('>>>') if inp == 'q':break sk.my_send(inp,('127.0.0.1',9090)) msg,addr = sk.my_recv(1024) if msg == 'q':break print(msg) sk.close()
server端code
from mysocket import Mysocket sk = Mysocket() sk.bind(('127.0.0.1',9090)) while True: msg,client_addr= sk.my_recv(1024) # udp協議不用創建連接 print(msg) inp = input('>>>') sk.my_send(inp,client_addr) sk.close()
client端server
import time import socket sk=socket.socket(type=socket.SOCK_DGRAM) while True: sk.sendto('%Y/%m/%d %H:%M:%S'.encode('utf-8'),('127.0.0.1',9090)) ret,addr=sk.recvfrom(1024) print(ret.decode('utf-8')) time.sleep(1) sk.close()
server端blog
# 時間同步服務 # udp協議完成的 # 四、5 臺機器 # 00:00 從一個文件裏 讀一些數據 明天的搜索 # 在一個機房裏 有一臺標準時間的服務器 # 機房裏全部的機器 都每隔一段時間 就去請求這臺服務器 來獲取一個標準時間 import time import socket sk=socket.socket(type=socket.SOCK_DGRAM) sk.bind(('127.0.0.1',9090)) while True: msg,addr=sk.recvfrom(1024) sk.sendto(time.strftime(msg.decode('utf-8')).encode('utf-8'),addr) sk.close()