网络编程 python

#usr/bin/python
#-*-coding:utf-8-*-




"""服务器端""""




import socket

# 创建服务端
server = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
# 绑定IP和端口
server.bind(("192.168.0.159",8888))
# 等待通讯
server.listen(5)
print("服务端已经启动,等待客户端连接.....")
# 接受通讯
connect1,address1 = server.accept()
while True:

    # 收到的信息
    msg = connect1.recv(1024)
    print("收到客户端发来的信息:{}".format(msg.decode("utf-8")))
    # 发送信息给客户端
    connect1.sendall(input('服务器:').encode("utf-8"))


# 通讯完毕,关闭连接
connect1.close()
# 关闭服务端
server.close()


""" 客户端"""


import socket

# 创建客户端
client1 = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
# 连接服务器
client1.connect(("192.168.0.159",8888))
print("客户端连接成功,请开始通讯,输入 n 结束通讯:")
while True:
    msg = input('客户端:')
    if msg == "n":
        break
    else:

        # 发送信息
        client1.send(msg.encode("utf-8"))

        # 接受服务器发送的信息
        msg = client1.recv(1024)
        print("服务端回复:{}".format(msg.decode("utf-8")))
# 通讯完毕,关闭连接
client1.close()



"""群聊服务器"""


import socket,threading

server = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
server.bind(("192.168.0.159",8888))
server.listen(5)
print("服务端已经启动,等待客户端链接...")
message = ''
lock = threading.Lock()
cond = threading.Condition(lock=lock)


def get_msg(conn,addr):
    while True:
        msg = conn.recv(1024)
        global message
        cond.acquire()
        message = str(addr) + ">>>:" + msg.decode()
        print("收到的信息:{}".format(message))
        cond.notifyAll()
        cond.release()
def send_msg(conn,addr):
    while True:   # 不加锁则一直发送
        cond.acquire()
        cond.wait()
        cond.release()
        conn.sendall(message.encode('utf-8'))
        print('\t发送信息:{}'.format(message))

while True:
    conn, addr = server.accept()
    threading._start_new_thread(get_msg,(conn,addr))
    threading._start_new_thread(send_msg,(conn,addr))
"""群聊客户端"""


import socket,threading

client = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
client.connect(("192.168.0.159",8888))

def get_msg():
    while True:
        msg1 = client.recv(1024)
        print("\t收到信息:{}".format(msg1.decode()))

threading._start_new_thread(get_msg,())
while True:
    msg2 = input("请输入信息:")
    client.send(msg2.encode("utf-8"))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值