0
点赞
收藏
分享

微信扫一扫

python,socket通信

岛上码农 2022-01-12 阅读 78

server.py

#!/usr/bin/python3
# 文件名:server.py

# 导入模块
import sys
import socket
import time

# sys.path.append("/home/python_demo/util")
from MyThread import myThread

# 存储接受到的信息
data = ''

# 创建 socket 对象
serversocket = socket.socket(
            socket.AF_INET, socket.SOCK_STREAM)
serversocket2 = socket.socket(
            socket.AF_INET, socket.SOCK_STREAM)

# 获取本地主机名
host = socket.gethostname()

# 绑定端口号
serversocket.bind((host, 9998))
serversocket2.bind((host, 9999))

# 设置最大连接数,超过后排队
serversocket.listen(5)
serversocket2.listen(5)

def serverRecvData():
    global data
    while True:
        # 建立客户端连接
        clientsocket,addr = serversocket.accept()

        print("数据接收: %s" % str(addr))

        recv = clientsocket.recv(1024)
        data += '\n' + recv.decode('utf-8')
        print('接受的信息:', recv.decode('utf-8'))
        print('全部信息:', data)

        clientsocket.close()

def serverSendData():
    global data
    while True:
        # 建立客户端连接
        clientsocket,addr = serversocket2.accept()

        print("数据发送: %s" % str(addr))

        msg = '更新:'+ data + "\r\n"
        clientsocket.send(msg.encode('utf-8'))

        clientsocket.close()

# 通过创建进程,同时接收 / 发送数据
thread1 = myThread(1, "Thread-1", serverRecvData)
thread2 = myThread(2, "Thread-2", serverSendData)

thread1.start()
thread2.start()

client.py

#!/usr/bin/python3
# 文件名:client.py

# 导入模块
import socket
import sys
import time

# 获取本地主机名
host = socket.gethostname()

# 设置端口号
port = 9998

def serverSendData():
    while True:
        # 创建 socket 对象
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

        # 连接服务,指定主机和端口
        s.connect((host, port))

        s.send(input('发给服务器:').encode('utf-8'));

        s.close()

        time.sleep(1)

serverSendData()

view.py

#!/usr/bin/python3
# 文件名:view.py

# 导入模块
import socket
import os
import sys
import time

# 获取本地主机名
host = socket.gethostname()

# 设置端口号
port = 9999

def serverRecvData():
    data = ''
    while True:
        # 创建 socket 对象
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

        # 连接服务,指定主机和端口
        s.connect((host, port))

        # 接收小于 1024 字节的数据
        msg = s.recv(1024)

        if data != msg.decode('utf-8'):
            data = msg.decode('utf-8')
            os.system('clear')
            print(data)

        s.close()

        time.sleep(1)

serverRecvData()

MyThread.py

# 文件名:MyThread.py
import threading

class myThread (threading.Thread):
    def __init__(self, threadID, name, func):
        threading.Thread.__init__(self)
        self.threadID = threadID
        self.name = name
        self.func = func
    def run(self):
        print ("开始线程:" + self.name)
        self.func()
        print ("退出线程:" + self.name)
举报

相关推荐

0 条评论