python服务器端+客户端

时间:2019-10-26
本文章向大家介绍python服务器端+客户端,主要包括python服务器端+客户端使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

1、最简单的服务端和客户端

服务端代码

import socket                    #网络编程需要用到socket模块

server = socket.socket()         #创建一个用于监听连接的Socket对像(服务器端) 
server.setblocking(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) #解决服务重启时报address already in use
server.bind(('127.0.0.1', 9001)) #设置服务端的ip和端口号
server.listen()                  #开始监听

conn, addr = server.accept()     #接受服务器端发出的消息和地址信息
c_info = conn.recv(1024)         #将接受的消息存入到c_info变量中
print(c_info)
conn.send(b'hello word')         #向客户端发出消息
conn.close()                     #关闭连接
server.close()                   #关闭服务端

客户端代码

import socket                        #网络编程需要用到socket模块

client = socket.socket()             #创建一个客户端
client.connect(('127.0.0.1', 9001))  #连接服务端

client.send(b'nice to meet you')     #向服务端发消息
s_info = client.recv(1024)           #接受服务端发来的消息
print(s_info)
client.close()                       #关闭客户端

2、可交互的服务端和客服端

 服务端代码

import socket

server = socket.socket()
server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
server.bind(('127.0.0.1', 9001))
server.listen()

conn, addr = server.accept()
while True:
    info=input('>>>')                        #输入数据,编码并发送给客户端
    info=info.encode('utf-8')                
    conn.send(info)                          
    c_info = conn.recv(1024).decode('utf-8') #接受客户端消息并解码
    print(c_info)
    if c_info == 'bye':                      #当客户端发送bye时,服务端给客户端发送bye并结束循环
        conn.send(b'bye')
        break
conn.close()
server.close()

客户端代码

import socket

client = socket.socket()
client.connect(('127.0.0.1', 9001))
while True:
    s_info = client.recv(1024)               #接受服务端的消息并解码
    s_info = s_info.decode(encoding='utf-8')
    print(s_info)
    if s_info == 'bye':                     #如果服务端发送的消息为bye,回复bye,结束循环
        client.send(b'bye')
        print('bye_1')
        break

    info = input('>>>')                     #输入数据,编码并发送给服务端
    info = info.encode('utf-8')
    client.send(info)
client.close()

总结:无论是服务端和客户逻辑是怎样的,服务端和客户端收发要对应。

代码亲测过,只写了逻辑实现,改进空间很大,请多指点。

原文地址:https://www.cnblogs.com/fuqiuyang1/p/11741961.html