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)