标签:接受 inf break encode 对象 bre 挥手 客户端连接 源码
TCP :语言聊天,视频聊天,线下缓存视频,远程控制,发邮件
需要先建立连接,然后通信
占用连接、可靠(消息不会丢失)、面向连接实时性高、全双工的通信、慢
建立连接 三次握手 全双工通信 SYN请求建立连接发送信息,ACK确认
思路:
# 服务端
import socket
sk=socket.socket()
sk.bind((‘127.0.0.1‘,1321)) #申请操作系统的资源
sk.listen() #等着别人连接
#等待一个客户端连接
conn,addr=sk.accept() #conn里存储的是一个客户段和一个服务端连接的信息
conn.send(b‘hello‘) #服务端对客户端说话用send
msg=conn.recv(1024) #客户段跟服务端说话用recv
print(msg)
conn.close() #挥手断开连接
sk.close() #归还申请操作系统的资源
#客户段
import socket
sk=socket.socket()
sk.connect((‘127.0.0.1‘,1321)) #绑定服务端方法地址,此处是元组
mag=sk.recv(1024) #接受信息
print(mag)
sk.send(b‘shoudao‘) #回信息
sk.close() #关闭对话
tcp server端与多个client端连接,发送多条信息,发Q断开server端与client端连接
import socket
#调用socket对象
sk=socket.socket()
# 申请操作系统的资源
sk.bind((‘127.0.0.1‘,7899))
# 等待客户端连接
sk.listen()
while True: #可以与多个客户端建立连接
# 同意建立连接
conn,addr=sk.accept()
print(conn)
while True: #可以接受多个客户端信息
# 接受客户端信息
msg=conn.recv(1024).decode(‘utf-8‘)
if msg.upper()==‘Q‘:break
print(msg)
#向客户段发送信息
msg_seng=input(‘向客户端发送信息:‘)
conn.send(msg_seng.encode(‘utf-8‘))
if msg_seng.upper() == ‘Q‘: break
# 挥手断开连接
conn.close()
# 归还操作系统的资源
sk.close()
import socket
#调用socket()对象
sk=socket.socket()
# 绑定服务端方法地址,建立连接
sk.connect((‘127.0.0.1‘,7899))
while True:
# 向服务端发送信息
msg_seng=input(‘向服务端发送信息:‘)
sk.send(msg_seng.encode(‘utf-8‘))
if msg_seng.upper() == ‘Q‘: break
# 接受服务端的信息
msg=sk.recv(1024).decode(‘utf-8‘)
if msg.upper()==‘Q‘:break
print(msg)
sk.close()
断开连接 四次挥手
为什么建立连接是三次,断开连接是四次?
标签:接受 inf break encode 对象 bre 挥手 客户端连接 源码
原文地址:https://www.cnblogs.com/xiaoxiannvdbky/p/14858396.html