基于tcp协议通信的套接字(通信循环)

让客户端和服务端可以互相通信

from socket import *

client = socket(AF_INET, SOCK_STREAM)
client.connect(('127.0.0.1', 8080))

# 通信循环
while True:
    msg=input('>>: ').strip()
    client.send(msg.encode('utf-8'))
    data=client.recv(1024)
    print(data)

client.close()
客户端
# 服务端必须满足至少三点:
# 1. 绑定一个固定的ip和port
# 2. 一直对外提供服务,稳定运行
# 3. 能够支持并发
from socket import *

server = socket(AF_INET, SOCK_STREAM)
server.bind(('127.0.0.1', 8080))
server.listen(5)  #限制请求数

conn, client_addr = server.accept()

# 通信循环
while True:
    data = conn.recv(1024) #接受数据最大限制
    conn.send(data.upper())

conn.close()
server.close()
服务端

上面有个问题,就是客户端关闭后,服务端也跟着关闭

修改版

from socket import *

client = socket(AF_INET, SOCK_STREAM)
client.connect(('127.0.0.1', 8080))

# 通信循环
while True:
    msg=input('>>: ').strip()
    client.send(msg.encode('utf-8'))
    data=client.recv(1024)
    print(data)

client.close()
客户端
# 服务端必须满足至少三点:
# 1. 绑定一个固定的ip和port
# 2. 一直对外提供服务,稳定运行
# 3. 能够支持并发
from socket import *

server = socket(AF_INET, SOCK_STREAM)
server.bind(('127.0.0.1', 8080))
server.listen(5)

conn, client_addr = server.accept()
print(client_addr)

# 通信循环
while True:
    try:
        data = conn.recv(1024)
        if len(data) == 0:break # 针对linux系统
        print('-->收到客户端的消息: ',data)
        conn.send(data.upper())
    except ConnectionResetError:
        break

conn.close()
server.close()
服务端

 

posted @ 2019-07-30 07:11  zhouhao666  阅读(179)  评论(0编辑  收藏  举报