python socket基本过程之二(server)

来源:互联网 发布:沥青库存数据 编辑:程序博客网 时间:2024/05/22 10:55

Python 3 Socket Server


所有的注释都写在了代码片段中,放在此处,以作记录。
和上一篇client稍有不同,使用多线程进行收发数据。可以考虑将此用于GUI程序…..

#! _*_ coding:utf-8 _*_'''我将要写一个标准的socket 服务端程序,书写整个流程Author:vincent'''import socketimport sysimport threadingprint("hello world 你好世界")# 第一步:创建socket'''Address Family:可以选择 AF_INET(用于 Internet 进程间通信) 或者 AF_UNIX(用于同一台机器进程间通信)Type:套接字类型,可以是 SOCKET_STREAM(流式套接字,主要用于 TCP 协议)或者 SOCKET_DGRAM(数据报套接字,主要用于 UDP 协议)'''try:    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)except socket.error as msg:    print("Socket创建失败,失败代码是:" + str(msg[0]) + "失败的信息是:" + msg[1])    sys.exit()print("socket 创建成功!")# 第二步:绑定socket'''函数 bind 可以用来将 socket 绑定到特定的地址和端口上,它需要一个 sockaddr_in 结构作为参数'''host = ''port = 8088try:    s.bind((host, port))except socket.error as msg:    print("Socket绑定失败,失败代码是:" + str(msg[0]) + "失败的信息是:" + msg[1])    sys.exit()print("socket 成功的绑定了!")# 第三步:监听连接'''函数 listen 可以将 socket 置于监听模式:该函数带有一个参数称为 backlog,用来控制连接的个数。如果设为 10,那么有 10 个连接正在等待处理,此时第 11 个请求过来时将会被拒绝。'''s.listen(10)print("socket 正在监听连接")# 第四步:接收客户端连接def client_thread(conn):    conn.sendall("欢迎登陆服务器!!".encode())    while True:        # 第五步:接收发送数据,将收到的数据返回        data = conn.recv(4096)        print("接收到的数据:" + data.decode())        if not data:            break        conn.sendall('OK...'.encode() + data)    # 第六步:关闭tcp连接,关闭socket    conn.close()    s.close()# 主线程进行接收客户端连接操作while True:    conn, addr = s.accept()    print("客户端连接:" + addr[0] + ":" + str(addr[1]))    ct = threading.Thread(client_thread(conn))    # ct.daemon()    ct.start()
0 0
原创粉丝点击