python基礎-day34__python

來源:互聯網
上載者:User
import socketsk = socket.socket()sk.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)'''加上這句話,就可以解決警示:address already in use.我們可以重用ip了,寫在bind()之前,'''sk.bind(('127.0.0.1',9000)) 



#udp版,伺服器用戶端模型#1.不用建立串連,即伺服器端沒有listen(),accept(),用戶端沒有connect()#2.發送和接收方法分別是sendto()和recvfrom()#server.py的代碼import socketsk = socket.socket(type=socket.SOCK_DGRAM)sk.bind(('127.0.0.1',9090))while True:    msg,client_addr= sk.recvfrom(1024)    print(msg.decode('utf-8'))    inp = input('>>>')    sk.sendto(inp.encode('utf-8'),client_addr)sk.close()#client.py的代碼,import socketsk = socket.socket(type=socket.SOCK_DGRAM)while True:    inp = input('>>>')    sk.sendto(inp.encode('utf-8'),('127.0.0.1',9090))    msg,addr = sk.recvfrom(1024)    print(msg.decode('utf-8'))sk.close()



'''#下面是自己手打的版本,需要弄清楚包匯入的使用,#1.關於匯入import socket和from socket import *的區別,    #前者匯入的是模組socket,因此繼承的話需要class xx(socket.socket):    #後者是匯入模組中的所有方法,因此繼承的話直接class xx(socket):#2.關於繼承已有類,實現更適合自己類,    #你要弄清,你是在原有類的基礎之上,添加一些新的屬性或方法,有些情況是重寫父類的方法,關於__repr__()該怎麼想??    #這個一定得看代碼!!!!!!!#3.函數返回多個參數,是以元組的形式返回的,#4.關於下面這段代碼,我開始是忘記寫return這個關鍵字了,雖然沒有報錯.    #我開始沒注意sendto()的傳回值,原來是發送的字元數,    def mySendTo(self, msg, addr):        return self.sendto( msg, addr)#client.pyfrom practice.mysocket import mysocketsk = mysocket()while True:    info = input('>>>')    sk.mySendTo(info.encode('utf-8'),('127.0.0.1',9999))sk.close()#server.pyfrom practice.mysocket import mysocketsk = mysocket()sk.bind(('127.0.0.1',9999))while True:    msg, addr = sk.myRecvFromm()    print('{}發來資訊:{}'.format(addr, msg))sk.close()#mysocket.pyimport socketclass mysocket(socket.socket):    def __init__(self,coding='utf-8'):        self.coding = coding        super().__init__(type=socket.SOCK_DGRAM)    def myRecvFromm(self):        msg, addr = self.recvfrom(1024)        return msg.decode(self.coding), addr    def mySendTo(self, msg, addr):        return self.sendto( msg, addr)'''


# 時間同步服務:用戶端發送希望的時間格式,伺服器根據這個格式發送對應格式的時間,#1.2018/05/04 16:44:51對應的時間格式為:%Y/%m/%d %H:%M:%S#2.time.strftime(),這個函數參數為時間格式和時間,若沒有傳入時間,則預設是當地的目前時間.#client.pyimport timeimport socketsk = 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.pyimport timeimport socketsk = 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()

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.