Python socket实现服务器端与客户端连接

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

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关闭

实现效果:
服务器端效果:
在这里插入图片描述
客户端实现效果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值