python socket基本过程之二(server)

Python 3 Socket Server


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

#! _*_ coding:utf-8 _*_

'''
我将要写一个标准的socket 服务端程序,书写整个流程
Author:vincent
'''

import socket
import sys
import threading

print("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 = 8088
try:
    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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值