Python socket实现服务器端与客户端连接
服务器端与客户端每个5秒钟通信一次,具体实现如下:
服务器端代码
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 文件名:server.py
import socket # 导入 socket 模块
import time
s = socket.socket() # 创建 socket 对象
host = socket.gethostname() # 获取本地主机名
host='10.276.58.231'
port = 8080 # 设置端口
s.bind((host, port)) # 绑定端口
s.listen(5) # 等待客户端连接
while True: #新增接收链接循环,conn就是客户端链接过来而在服务端为期生成的一个链接实例
conn,addr=s.accept() #被动接受TCP客户端连接,(阻塞式)等待连接的到来,等待链接,多个链接的时候就会出现问题,其实返回了两个值
print('连接地址:', addr)
print('conn', conn)
while True:
try:
data="server"
conn.sendall(bytes(data,encoding="utf-8"))
data=conn.recv(1024)
print(str(data,encoding="utf-8"))
while True: #新增通信循环,可以不断的通信,收发消息
a = 0
# count = 0
while True:
# count+=1
time.sleep(5) #睡眠5秒
a+=1
keepclass = "Server->与服务器端已连接"+str(a*5)+"秒,发送时间:"+time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))
# time.sleep(1)
conn.send(bytes(keepclass,'UTF-8')) #发送消息
msg=conn.recv(1024*2)
msg.decode('utf-8')
print(str(msg.decode('utf-8')))
except Exception as e:
print(e)
break
conn.close() #关闭连接
c.close() # 关闭连接
客户端代码
#import socket module as socket
import socket
import sys
ip_port=('10.276.58.231',8080)
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(ip_port) #连接服务器端
while True: #新增通信循环,客户端可以不断发收消息
msg='wo shi kehuduan xingtiao'
s.send(msg.encode('utf-8')) #发送消息(只能发送字节类型)
a=s.recv(1024) #接收消息
sys.stderr.write('Client:' +str(a.decode('utf-8')) + '\n')
s.close() #socket关闭
实现效果:
服务器端效果:

客户端实现效果:

本文详细介绍了使用Python的socket模块实现服务器与客户端的通信过程。通过示例代码展示了如何建立服务器端与客户端的连接,以及如何使两者每5秒钟进行一次通信。服务器端与客户端的代码均被详细列出,便于读者理解和实践。

4945

被折叠的 条评论
为什么被折叠?



