Python 计算机通信

此代码示例展示了如何使用Python的socket库创建一个简单的聊天室服务端和客户端。服务端监听特定端口,接收并广播用户消息,而客户端则连接到服务端,允许用户输入消息并接收其他用户的消息。该系统采用多线程处理多个客户端连接。
摘要由CSDN通过智能技术生成

一、服务端

import socket
import random
import threading

def creat_chatroom():
    s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    s.bind(('127.0.0.1',9999))
    s.listen(5)
    print('聊天室已经创建')
    return s

#给其他用户发送消息
def send_message(data):
    for conn in client:
        conn.send(data)

#生成随机昵称
def random_name():
    name=random.choice(['香蕉','苹果','梨','橘子','桃子','西瓜','草莓','菠萝'])
    for i in range(3):
        name+=random.choice('123456789')
    return name

def fun(conn,addr):
    name=random_name()
    users[addr]=conn
    client[conn]=name
    send_message(bytes(f'欢迎{name}加入聊天室',encoding='utf-8'))
    while True:
        try:
            data=conn.recv(1024)
            data=f'{client[conn]}说:{data.decode("utf-8")}'
            send_message(bytes(data,encoding='utf-8'))
        except:
            print(f'{users[addr]}已经断开连接')
            data=bytes(f'{users[addr]}已经断开连接',encoding='utf-8')
            del users[addr]
            del client[conn]
            send_message(data)
            break
def main():
    s=creat_chatroom()
    global users,client
    users={}
    client={}
    while True:
        conn,addr=s.accept()
        threading.Thread(target=fun,args=(conn,addr)).start()
    s.close()

if __name__ == '__main__':
    main()

二、客户端

import socket
import threading

def creat_thread(s):
    while True:
        data=input('请输入消息:')
        if data!='exit':
            s.send(bytes(data,encoding='utf-8'))
        else:
            s.close()
            break

def main():
    s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    # creat_thread(s)
    s.connect(('127.0.0.1',9999))
    threading.Thread(target=creat_thread,args=(s,)).start()
    while True:
        try:
            data=s.recv(1024)
            print(data.decode('utf-8')+'\n')
        except:
            print('已经断开连接\n')
            break
    s.close()

if __name__ == '__main__':
    main()

Python的socket通信是一种用于实现网络通信的方法。通过使用socket库,可以在不同的计算机之间建立起连接,实现数据的传输和交互。在Python中,socket通信可以用于实现不同进程或不同计算机之间的通信。 在给出的引用中,有几个不同的例子展示了Python中socket通信的不同方式。 第一个例子是一个并发聊天的例子。其中包括一个服务端和一个客户端,通过创建一个服务器和多个客户端,实现了多个用户之间的实时聊天。在服务端中,通过使用socketserver库的BaseRequestHandler类,对客户端的请求进行处理。而在客户端中,通过创建一个socket对象,并通过connect方法连接到服务器端。 第二个例子是一个简单的并发通信例子。类似于第一个例子,它也包括一个服务端和一个客户端。在服务端中,通过创建一个服务器对象并监听指定的IP地址和端口号,等待客户端的连接。然后通过接收和发送数据来实现与客户端的通信。在客户端中,通过创建一个socket对象,并通过connect方法连接到服务器端,然后通过发送和接收数据来实现与服务器端的通信。 第三个例子是一个基础样例。它展示了一个简单的服务器和一个客户端之间的通信。在服务器端,通过创建一个socket对象,并通过bind方法绑定指定的IP地址和端口号。然后通过listen方法监听连接请求,并通过accept方法接受客户端的连接。然后通过接收和发送数据来实现与客户端的通信。在客户端中,通过创建一个socket对象,并通过connect方法连接到服务器端,然后通过发送和接收数据来实现与服务器端的通信。 总结来说,Python的socket通信可以通过创建socket对象,并调用相应的方法来实现与其他计算机或进程的通信。这些方法包括连接、发送、接收等。不同的例子展示了不同的应用场景,可以根据实际需求选择适合的方式来使用socket通信。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Socket网络编程(python)](https://blog.csdn.net/shitou987/article/details/107966819)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值