Git的使用及網絡編程多線程多進程

Git的使用git

1.打開CMD命令行,輸入cd Desktop進入桌面
編程

2.輸入 mkdir + ‘file name’建立文件,若是已有項目則輸入 cd + file name進入文件,若是在Git上已有項目而且在已有項目進行修改,則輸入cd clone + url服務器

3.若是第一次使用,則先初始化,git init網絡

4. git add + file name 把項目加入文件夾裏面多線程

5.git config -global 全局設置(第一次使用的時候設置)app

6. git log 查看日誌、git reset + 版本(回到某個版本)、git rm 刪除文件、git pull 先把服務器已有的東西下載本地再去pushsocket

7. git remote add origin + url 和 git push -u origin master 對文件進行上傳tcp

8.其它命令:git branch + file name創建新的分支、git checkout + 'file name'切換到新的分支、git merge + 'file name'合併兩個分支、git branch -d 'file name'刪除分支ui

多線程多進程url

進程-操做系統分配內存的基本單位,進程見的內存是相互隔離的。對於操做系統來講,一個正在執行的任務就是一個進程,每一個進程都有本身的地址空間、內存、數據棧以及其餘記錄其運行軌跡的輔助數據。操做系統管理在其上運行的全部進程,併爲這些進程公平地分配時間。不過各個進程有本身的內存空間、數據棧等,因此只能使用進程間的通訊(Inter-Process Communication, IPC),而不能直接共享信息。

線程-在一個進程內部,要同時幹多件事,就須要同時運行多個'子任務',咱們把進程內的這些'子任務'稱爲線程(Thread)。一個進程中的各個線程之間共享一片數據空間,因此線程之間能夠比進程之間更爲方便地共享數據以及相互通訊。在進程的整個運行過程當中,每一個線程都只作本身的事,在須要的時候跟其餘的線程共享運行的結果。

 

threading模塊包含了一個易於實現的鎖機制,能夠用於同步線程。能夠經過調用Lock()方法來建立一個新的鎖,這個方法將返回一個鎖對象。鎖對象擁有一個accquire(blocking)方法,能夠強制線程進行同步的工做。其中可選的blocking參數可以控制線程在嘗試得到鎖時是否等待。blocking參數設置爲0時,線程若沒法得到鎖,則當即返回0;blocking設置爲1時,線程若沒法得到鎖,則會被阻塞等待鎖的釋放。線程能夠經過release()方法來釋放一個再也不須要的鎖。

網絡編程
from socket import socket, AF_INET, SOCK_STREAM
import datetime
# stream 是tcp,DGRAM是udp


def main():
    # 建立一個基於TCP協議的套接字對象
    # 由於咱們作的是應用級的產品或服務,因此能夠利用現有的傳輸服務來實施數據傳輸
    server = socket(AF_INET, SOCK_STREAM)     # 表示用的ipv4的地址(固定寫法)兩個參數可寫可不寫
    server.bind(('10.7.189.130', 6663)) # 綁定IP地址(網絡上主機身份標識)和本機端口(用來區分不一樣服務ip地址的擴展)
    # 開始監聽客戶端的鏈接
    server.listen(512)                           # 隊列的大小,最多排512個
    print('服務器已經啓動,正在監聽')
    while True:
        client, addr = server.accept() # 經過accept方法接受客戶端的鏈接
        # accept 方法是個阻塞式方法,若是沒有客戶端連上來,那麼accept方法就會讓代碼阻塞
        # 直到有客戶端鏈接成功纔會有成功
        # accept 方法返回一個元組,元組中第一個值表明客戶端的對象
        # 第二個值又是一個元組,其中有客戶端的ip地址和端口
        currenttime = datetime.datetime.now()
        print(addr, '鏈接成功')
        # client.send('hello'.encode('utf-8'))
        client.send(currenttime.__str__().encode('utf-8'))
        client.close()


if __name__ == '__main__':
    main()
# 鏈接
from socket import socket


def main():
    client = socket()
    client.connect(('10.7.189.118', 6789))
    data = client.recv(512)
    print(data.decode('utf-8'))

聊天室的服務端

from socket import socket
from threading import Thread


def main():

    class RefreshScreenThread(Thread):
        def __init__(self, client):
            super().__init__()
            self._client = client

        def run(self):  # 負責刷屏
            while True:
                data = self._client.recv(1024)
                print(data.decode('utf-8'))

    nickname = input('請輸入你的暱稱:')
    myclient = socket()
    myclient.connect(('10.7.189.130', 11110))
    RefreshScreenThread(myclient).start()
    running = True
    while running:
        content = input('請發言:')
        if content == 'byebye':
            myclient.send(content.encode('utf-8'))
            running == False
        else:
            msg = nickname + ':' + content
            myclient.send(msg.encode('utf-8'))


if __name__ == '__main__':
    main()

聊天室的客戶端

from threading import Thread
from socket import socket


def main():
    class ClientHandler(Thread):

        def __init__(self, client):
            super().__init__()
            self._client = client

        def run(self):
            while True:
                try:
                    data = self._client.recv(1024)  # 把數據接受下來直接發給別人,不用decode
                    if data.decode('utf-8') == 'byebye':  # 用戶說byebye後主動斷開鏈接
                        client.remove(self._client)
                        self._client.close()
                        break
                    else:
                        for client in clients:
                            # if client != self._client:  # 若是不想本身發給本身的話
                            client.send(data)
                except Exception as e:
                    print(e)
                    client.remove(self._client)  # 發生異常就移除這個客戶端
                    break

    server = socket()
    # 命令行參數 sys.argv
    server.bind(('10.7.189.130', 11110))
    server.listen(1024)
    clients = []    # 用於存多個客戶鏈接進來,並記錄信息保存在這個容器裏面
    while True:
        curr_client, addr = server.accept()  # 接收用戶請求
        print(addr[0])
        clients.append(curr_client)  # 若是在while裏面進行收發消息,別人就沒法連入聊天室
        # 因此起線程處理數據
        ClientHandler(curr_client).start()


if __name__ == '__main__':
    main()
相關文章
相關標籤/搜索