python简单的socket编程,实现服务器和客户端进行聊天

<----这是一个简单的socket编程通信,使用了tcp协议。后续继续学习会进一步完善的,谢谢!!---->

服务器端源码

#导入网络编程模块
import socket
#实例化一个网络编程对象
s=socket.socket() #类似买手机
#绑定ip地址,如果绑定本机ip的话,其他人都可访问,我们在测试过程中尽量使用127.0.0.1,表示本机地址,但是其他人访问不了
s.bind(('127.0.0.1',9000)) #类似绑定卡号,9000为应用接口
#进行监听
s.listen()#类似开机
#等待连接
print('等待客户端连接中......')
#接受信息连接和地址的对象
conn,addr=s.accept() #类似接电话
msg1=conn.send('服务器开放时间为:早上八点到晚上十二点。请各位客户悉知!谢谢!!'.encode('utf-8'))
msg=conn.recv(1024)
print(msg.decode('utf-8'))
#

#
while True:
msg=conn.recv(1024)#接受1024个字节信息
print('客户端:',msg.decode('utf-8'))
inp=input('服务器:')
if inp=='exit':
conn.send('服务器关闭了,请下次再来吧'.encode('utf-8'))
break
conn.send(inp.encode('utf-8'))#发送消息
#关闭一个客户端的连接
print('已经关闭一个客户端的连接!')
conn.close()#挂电话
print('关闭服务器!')
s.close()#关机

客户端源码

import socket
s=socket.socket()
s.connect(('127.0.0.1',9000))
s.send('客户端1已经连接上了'.encode('utf-8'))
msg1=s.recv(1024)
print(msg1.decode('utf-8'))
while True:
inp=input('客户端:')
if inp=='exit':
s.send('客户端1断开连接了'.encode('utf-8'))
break
else:
s.send(inp.encode('utf-8'))#为什么发送不出去
msg=s.recv(1024)#接受1024个字节
print('服务器:',msg.decode('utf-8'))
#s.send('你好,服务器')会出现错误TypeError: a bytes-like object is required, not 'str',因为需要字节传输
#那你是用utf-8进行编码,所以服务器端需要用utf-8进行解码
print('客户端1关闭会话!')
s.close()

实现过程

(1)首先启动服务器端程序

python简单的socket编程,实现服务器和客户端进行聊天

(2)然后启动客户端程序

python简单的socket编程,实现服务器和客户端进行聊天

(3)最后就可以进行通信了

python简单的socket编程,实现服务器和客户端进行聊天

python简单的socket编程,实现服务器和客户端进行聊天

(4)程序中设置了客户端或者服务器输入exit关键字就自动退出连接

python简单的socket编程,实现服务器和客户端进行聊天

python简单的socket编程,实现服务器和客户端进行聊天


上一篇:python3 stock send() 函数报错: TypeError: a bytes-like object is required, not 'str'


下一篇:(freeRTOS)EventGroup的使用