day30-python之socket

来源:https://www.cnblogs.com/sqy-yyr/archive/2019/08/24/11406106.html

1.iter補充 2.ntp_client和ntp_server 3.time複習 4.udp的客戶端與服務端通信 5.解決粘包 # from socket import * # ip_port=('127.0.0.1',8080) # back_log=5 # buffer_size=1024 # ...


1.iter補充

# l=['a','b','c','d']
#
# def test():
#     return l.pop()
#
# x=iter(test,'b')
# print(x.__next__())
# print(x.__next__())
# print(x.__next__())
from functools import partial
def add(x,y):
    return x+y

func = partial(add,1)
print(func(1))
print(func(2))

# from functools import partial
# def add(x,y):
#     return x+y
# # print(add(1,2))
#
# func=partial(add,1) #偏函數
# print(func(1))
# print(func(2))

# recv_size = 0
# recv_msg = b''
# while recv_size < length:
#     recv_msg += tcp_client.recv(buffer_size)
#     recv_size = len(recv_msg)  #1024

# ''.join(iter(partial(tcp_client.recv,1024),b''))

2.ntp_client和ntp_server

# from socket import *
# import time
# ip_port=('127.0.0.1',8080)
# buffer_size=1024
#
# udp_server=socket(AF_INET,SOCK_DGRAM) #數據報
# udp_server.bind(ip_port)
from socket import *
import time
ip_port = ('127.0.0.1',8080)
buffer_size = 1024

udp_server = socket(AF_INET,SOCK_DGRAM)
udp_server.bind(ip_port)

while True:
    data,addr =udp_server.recvfrom(buffer_size)
    print(data)

    if not data:
        fmt = '%Y-%m-%d %X'
    else:
        fmt = data.decode('utf-8')
    back_time = time.strftime(fmt)

    udp_server.sendto(back_time.encode('utf-8'),addr)

# while True:
#     data,addr=udp_server.recvfrom(buffer_size)
#     print(data)
#
#     if not data:
#         fmt='%Y-%m-%d %X'
#     else:
#         fmt=data.decode('utf-8')
#     back_time=time.strftime(fmt)
#
#     udp_server.sendto(back_time.encode('utf-8'),addr)
# from socket import *
# ip_port=('127.0.0.1',8080)
# buffer_size=1024
#
# udp_client=socket(AF_INET,SOCK_DGRAM) #數據報
#
# while True:
#     msg=input('>>: ').strip()
#     udp_client.sendto(msg.encode('utf-8'),ip_port)
#
#     data,addr=udp_client.recvfrom(buffer_size)
#     print('ntp伺服器的標準時間是',data.decode('utf-8'))

from socket import  *
ip_port = ('127.0.0.1',8080)
buffer_size = 1024

udp_client = socket(AF_INET,SOCK_DGRAM)
while True:
    msg = input('>>: ').strip()
    udp_client.sendto(msg.encode('utf-8'),ip_port)

    data,addr=udp_client.recvfrom(buffer_size)
    print('ntp伺服器的標準時間是',data.decode('utf-8'))

3.time複習

# import time


import  time
# print(time.time())
# print(time.localtime(time.time()))

# print(time.gmtime(time.time()+28800))

# print(time.mktime(time.localtime()))

# print(time.strftime('%Y-%m-%d %X',time.localtime()))

# print(time.strftime('%F %X',time.localtime()))

print(time.ctime())
# print(time.time()) #用於計算
# print(time.localtime(time.time()))
# print(time.gmtime(time.time()+28800))
# print(time.mktime(time.localtime())) #格式化-->時間戳
# print(time.strftime('%Y-%m-%d %X',time.localtime())) #格式化--》字元串時間
# print(time.strftime('%F %X',time.localtime()))
# print(time.strptime('2017-01-03 09:37:06','%Y-%m-%d %X')) #字元串--》格式化
# print(time.ctime())

4.udp的客戶端與服務端通信

from socket import *
ip_port=('127.0.0.1',8081)
buffer_size=1024

udp_client=socket(AF_INET,SOCK_DGRAM) #數據報

while True:
    msg=input('>>: ').strip()
    udp_client.sendto(msg.encode('utf-8'),ip_port)

    data,addr=udp_client.recvfrom(buffer_size)
    # print(data.decode('utf-8'))
    print(data)
# from socket import *
# ip_port=('127.0.0.1',8080)
# buffer_size=1024
#
# udp_server=socket(AF_INET,SOCK_DGRAM) #數據報
# udp_server.bind(ip_port)
#

from  socket import  *
ip_port = ('127.0.0.1',8081)
buffer_size = 1024
udp_server = socket(AF_INET,SOCK_DGRAM)
udp_server.bind(ip_port)
while True:
    data,addr = udp_server.recvfrom(buffer_size)
    print(data)

    udp_server.sendto(data.upper(),addr)
# while True:
#     data,addr=udp_server.recvfrom(buffer_size)
#     print(data)
#
#     udp_server.sendto(data.upper(),addr)

5.解決粘包

# from socket import *
# ip_port=('127.0.0.1',8080)
# back_log=5
# buffer_size=1024
#
# tcp_server=socket(AF_INET,SOCK_STREAM)
# tcp_server.bind(ip_port)
# tcp_server.listen(back_log)
#
from socket import  *
ip_port = ('127.0.0.1',8082)
back_log = 5
buffer_size = 1024
tcp_server = socket(AF_INET,SOCK_STREAM)
tcp_server.bind(ip_port)
tcp_server.listen(back_log)

conn,addr = tcp_server.accept()
data1 = conn.recv(5)
print('第一次數據',data1)
data2 = conn.recv(5)
print('第二次數據',data2)
data3 = conn.recv(5)
print('第三次數據',data3)
# conn,addr=tcp_server.accept()
#
# data1=conn.recv(5)
# print('第一次數據',data1)
#
# data2=conn.recv(5)
# print('第2次數據',data2)
#
# data3=conn.recv(5)
# print('第3次數據',data3)
View Code
# from socket import *
# import time
# ip_port=('127.0.0.1',8080)
# back_log=5
# buffer_size=1024
#
# tcp_client=socket(AF_INET,SOCK_STREAM)
# tcp_client.connect(ip_port)
#

from  socket import *
import time
ip_port = ('127.0.0.1',8082)
back_log = 5
buffer_size = 1024

tcp_client = socket(AF_INET,SOCK_STREAM)
tcp_client.connect(ip_port)
tcp_client.send('hello'.encode('utf-8'))
tcp_client.send('world'.encode('utf=8'))
tcp_client.send('egon'.encode('utf-8'))
# tcp_client.send('hello'.encode('utf-8'))
# tcp_client.send('world'.encode('utf-8'))
# tcp_client.send('egon'.encode('utf-8'))
#
#
# # time.sleep(1000)

 


您的分享是我們最大的動力!

更多相關文章
  • 是否有一些函數可以告訴我字元串在記憶體中占用多少位元組? 我需要設置套接字緩衝區的大小,以便一次傳輸整個字元串。 解決方案 但實際上你需要知道它代表的長度,所以類似的東西len(s)應該足夠了。 本文首發於Python黑洞網,博客園同步更新 ...
  • 在項目開發中,日誌系統是必不可少的,用`AOP`在Web的請求做入參和出參的參數列印,同時對異常進行日誌列印,避免重覆的手寫日誌,完整案例見文末源碼。 ...
  • 本文主要以一些簡單的小例子,簡述在SpringMVC開發過程中,經常用到的Request方面的內容,僅供學習分享使用,如有不足之處,還請指正。 ...
  • - False bool 類型的假值。 給 False 賦值是非法的並會引發 SyntaxError。 - True bool 類型的真值。 給 True 賦值是非法的並會引發 SyntaxError。 - None NoneType 類型的唯一值。 我理解為空值。 - NotImplemented ...
  • Tinymce富文本 前臺和後臺的使用 一,後臺 Admin 1. 於 settings.py 文件中修改 INSTALLED_APPS 2. 於 settings.py 文件中增添如下配置 1 # 富文本配置 2 TINYMCE_DEFAULT_CONFIG = { 3 'theme': 'adv ...
  • 修改列表中的元素: output: ['history','Chinese','English'] 列表中添加元素: 在末尾添加: output:['math','English'] ['math','English','Chinese'] 插入元素: output:['math','English ...
  • 在 IntelliJ IDEA 中,沒有類似於 Eclipse 工作空間(Workspace)的概念,而是提出了Project和Module這兩個概念。多module有一個父maven工程,多個子工程。在多個子工程中,可能有一個web工程,也可能有多個web工程。這樣的好處在於大大解耦各個modul... ...
  • 會話技術: 會話是什麼? 瀏覽器和伺服器交互,瀏覽器打開網頁訪問伺服器,會話開始,正常交互. 瀏覽器關閉,會話結束. 會話能幹什麼? 會話可以共用數據. Cookie和session將數據保存在不同的位置 進行數據共用 Cookie入門案例 1.創建一個cookie對象 a. Cookie cook ...
一周排行
  • 比如要拆分“呵呵呵90909086676喝喝999”,下麵當type=0返回的是中文字元串“呵呵呵,喝喝”,type=1返回的是數字字元串“90909086676,999”, private string GetStrings(string str,int type=0) { IList<strin ...
  • Swagger一個優秀的Api介面文檔生成工具。Swagger可以可以動態生成Api介面文檔,有效的降低前後端人員關於Api介面的溝通成本,促進項目高效開發。 1、使用NuGet安裝最新的包:Swashbuckle.AspNetCore。 2、編輯項目文件(NetCoreTemplate.Web.c ...
  • 2020 年 7 月 30 日, 由.NET基金會和微軟 將舉辦一個線上和為期一天的活動,包括 微軟 .NET 團隊的演講者以及社區的演講者。本次線上大會 專註.NET框架構建微服務,演講者分享構建和部署雲原生應用程式的最佳實踐、模式、提示和技巧。有關更多信息和隨時瞭解情況:https://focu... ...
  • #abp框架Excel導出——基於vue #1.技術棧 ##1.1 前端採用vue,官方提供 UI套件用的是iview ##1.2 後臺是abp——aspnetboilerplate 即abp v1,https://github.com/aspnetboilerplate/aspnetboilerp ...
  • 前言 本文的文字及圖片來源於網路,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯繫我們以作處理。 作者:碧茂大數據 PS:如有需要Python學習資料的小伙伴可以加下方的群去找免費管理員領取 input()輸入 Python提供了 input() 內置函數從標準輸入讀入一 ...
  • 從12年到20年,python以肉眼可見的趨勢超過了java,成為了當今It界人人皆知的編程語言。 python為什麼這麼火? 網路編程語言搜索指數 適合初學者 Python具有語法簡單、語句清晰的特點,這就讓初學者在學習階段可以把精力集中在編程對象和思維方法上。 大佬都在用 Google,YouT ...
  • 在社會上存在一種普遍的對培訓機構的學生一種歧視的現象,具體表現在,比如:當你去公司面試的時候,一旦你說了你是培訓機構出來的,那麼基本上你就涼了,那麼你瞞著不說,然後又通過了面試成功入職,但是以後一旦在公司被髮現有培訓經歷,可能會面臨被降薪,甚至被辭退,培訓機構出來的學生,在用人單位眼裡就是能力低下的 ...
  • from typing import List# 這道題看了大佬寫的代碼,經過自己的理解寫出來了。# 從最外圍的四周找有沒有為O的,如果有的話就進入深搜函數,然後深搜遍歷# 判斷上下左右的位置是否為Oclass Solution: def solve(self, board: List[List[s ...
  • import requests; import re; import os; # 1.請求網頁 header = { "user-agent":'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, li ...
  • import requests; import re; import os; import parsel; 1.請求網頁 header = { "user-agent":'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537. ...