客户端的connect对应的服务端的accept 三次握手
服务端既可以发消息也可以收消息
客户端
#_*_coding:utf-8_*_
import socket
#1、先有手机 socket类型(网络通信) 流式就是TCP协议
phone=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#print(phone)
#2、拨号 连接 客户端的connect对应的服务端的accept
phone.connect(('127.0.0.1',8081))
#3、发,收消息
phone.send('hello'.encode('utf-8'))
data=phone.recv(1024)
print(data)
#4、关闭
phone.close()
服务端
#_*_coding:utf-8_*_
import socket
#1、买手机
phone=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
# print(phone)
#2、绑定手机卡
phone.bind(('127.0.0.1',8081)) #0-65535:0-1024给操作系统使用
#3、开机 监听
phone.listen(5)
#4、等电话链接 等待接受客户端过来的信息
print('starting...')
#过来的是元祖
conn,client_addr=phone.accept()
#5、电话拨通连接到客户端的,就要收,发消息
data=conn.recv(1024) #1、单位:bytes 2、1024代表最大接收1024个bytes 字节
print('客户端的数据',data)
conn.send(data.upper())
#6、挂电话
conn.close()
#7、关机
phone.close()
客户端
#_*_coding:utf-8_*_
import socket
phone=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
phone.connect(('127.0.0.1',8083))
while True:
msg=input('>>: ').strip()
phone.send(msg.encode('utf-8'))
data=phone.recv(1024)
print(data)
phone.close()
服务端
#_*_coding:utf-8_*_
import socket
phone=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#绑定
phone.bind(('127.0.0.1',8083)) #0-65535:0-1024给操作系统使用
#监听
phone.listen(5)
print('starting...')
conn,client_addr=phone.accept()
print(client_addr)
while True: #通信循环
#收客户端信息
data=conn.recv(1024)
print('客户端的数据',data)
#发给客户端
conn.send(data.upper())
conn.close()
phone.close()
服务端
#_*_coding:utf-8_*_
import socket
phone=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#机器原来存在8083的端口,重复使用
phone.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
phone.bind(('127.0.0.1',8083)) #0-65535:0-1024给操作系统使用
phone.listen(5)
print('starting...')
conn,client_addr=phone.accept()
print(client_addr)
while True: #通信循环
try:
data=conn.recv(1024)
if not data:break #适用于linux操作系统
print('客户端的数据',data)
conn.send(data.upper())
except ConnectionResetError: #适用于windows操作系统
break
conn.close()
phone.close()
客户端
#_*_coding:utf-8_*_
import socket
phone=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
phone.connect(('127.0.0.1',8083))
while True:
msg=input('>>: ').strip() #msg=''
#不能为空就继续
if not msg:continue
#发数据
phone.send(msg.encode('utf-8')) #phone.send(b'')
# print('has send')
#接受服务端发来的信息
data=phone.recv(1024)
# print('has recv')
print(data.decode('utf-8'))
phone.close()