Python学习第6篇——基本的网络编程

由于还没有接触Python并发编程的知识,故这里的服务器单次只能和一个客户端交互,当断开当前客户端的连接后,其他客户端才可以与服务器交互,下面附上服务器和客户端的代码:

server.py:

import socket

server_sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM) #建立套接字
server_sock.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) #设置套接字选项使其可以重复使用
server_sock.bind(('127.0.0.1',8080)) #将套接字与本机地址绑定
server_sock.listen(5) #可挂起的客户端最大数量为5
print("starting...")

#收发消息
while True:    #链接循环,一服务器对多客户端
    conn, client = server_sock.accept() #conn为套接字对象,client包括客户端IP地址和端口号
    while True:  #通信循环
        try:
            data = conn.recv(1024) #最大可一次性接收1024字节的消息
            if not data:
                break   #客户端断开连接时的处理,适用于Linux操作系统
            print("客户端数据:", data.decode("utf-8")) #由于发送和接受的数据都是字节的形式,故接收端需解码一下
            msg = input(">> ")
            conn.send(msg.encode('utf-8')) #发送数据
        except ConnectionResetError: #客户端断开连接时的处理,适用于Windows操作系统
            break
    conn.close() #关闭与该客户端的连接,继续接收其他客户端的连接请求

server_sock.close()  #断开服务器连接

 

client.py:

import socket

client_sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM) #创建客户端套接字
client_sock.connect(('127.0.0.1',8080)) #向服务器发送连接请求,参数为包含服务器IP地址和端口号的元组

#收发消息
while True:
    msg = input(">> ").strip() #格式化,去掉输入信息中的空格
    if not msg:
        continue
    client_sock.send(msg.encode('utf-8')) #发送消息并编码成utf-8格式
    data = client_sock.recv(1024) #接收客户端发过来的消息
    print(data.decode('utf-8')) #将客户端发过来的消息解码并输出

client_sock.close()

 

运行结果:

服务器端:

客户端:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值