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()
相关文章
相关标签/搜索