python 网络编程 01.23

单个服务端:

import socket                                #导入socket模块
import threading                             #导入threading模块
serversockent=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
serversockent.bind(("172.16.0.161",9999))   #绑定服务器地址和端口号
print("服务器以等待")
serversockent.listen(5)                      #最多同时接收5个
print("最多同时连接5个客户")
c=serversockent.accept()                     #接收客户端的连接,此c是元祖,表示得到的客户端
print(c)
def myrerv(c):
    while True:
        msg=c[0].recv(1024)                  #接收消息
        print(msg.decode())
threading._start_new_thread(myrerv,(c))

def myinput():
    while True:
        msg=input()
        c[0].send(msg.encode())
threading._start_new_thread(myinput())

客户端:

import socket                             #导入socket模块
import threading                          #导入threading模块
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(("172.16.0.161",6666))         # 连接服务,指定主机和端口
print("客户端已连接")
def myrerv(c):
    while True:
        msg=c.recv(1024)               #接收消息
        print(msg.decode())
threading._start_new_thread(myrerv,(s,))
def myinput():
    while True:
        msg=input()
        s.send(msg.encode())
threading._start_new_thread(myinput())
群聊服务端:

import socket                           #导入模块
import threading
serversocket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
serversocket.bind(("172.16.0.161",6666))#绑定服务地址和端口号
print("服务器已等待")
serversocket.listen(5)                   #最多同时接收5个
msg=None                                 #定义一个全局的变量,用来存储聊天信息,临时存储当前抢到线程的数据
lock=threading.Lock()
mythread=threading.Condition(lock)

def server_recv(c,a):
    global msg
    while True:
        mystr=c.recv(1024)
        mythread.acquire()               #线程同步
        msg = str(a) + mystr.decode()
        print(msg)
        mythread.notify_all()
        mythread.release()

def server_send(c,a):
    global  msg
    while True:
        mythread.acquire()
        mythread.wait()
        mythread.release()
        c.send(msg.encode())
        print(msg)


while True:
    c,a=serversocket.accept()
    threading._start_new_thread(server_recv,(c,a))
    threading._start_new_thread(server_send,(c,a))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值