scoket多线程例子

大体思路,有n台mc,要dump出数据,n台进行对比,看数据是否一致,设计到同时dump的问题,server断发条指令给这n台mc,mc同时去dump把结果返回给server端,server端把这些结果进行对比

server段

#!/usr/bin/python

#coding:utf8

import socket

import os

import threading

import time

import sys

def work_1(ip,conn):

global should_stop

while True:

‘‘‘

if should_stop:

print "should_stop"

break

‘‘‘

time.sleep(10)

conn.send(ip)

client_data=conn.recv(1024)

data1=client_data.split(" ")[0]

try:

data2=client_data.split(" ")[1]

except IndexError, e:

print "should_stop set"

should_stop = True

bb=open(‘/home/text.txt‘,‘a‘)

bb.write(client_data+‘\n‘)

print time.time(),client_data

s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)

s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

s.bind((‘10.13.144.224‘,9999))

s.listen(10)

s.setblocking(0)

s.settimeout(10)

ip=‘10.13.144.224‘

list_1=[]

should_stop = False

while True:

if should_stop: break

try:

conn,addr=s.accept()

except socket.timeout:

continue

print "client timeout: ",conn.gettimeout()

a=0

aa=threading.Thread(target=work_1,args=(ip,conn))

list_1.append(aa)

print list_1

aa.start()

print "join"

for i in list_1:

i.join()

print ‘+++++‘

cc=open(‘/home/text.txt‘,‘r‘)

cd=open(‘/home/text1.txt‘,‘w‘)

ca=cc.readlines()

for ii in ca:

if ii == ‘‘:

break

elif ii == ‘\n‘:

pass

else:

cd.write(ii)

cd.close()

cg=open(‘/home/text1.txt‘,‘r‘)

cf=cg.readlines()

dict_1={}

for iiii in cf:

print ‘ok‘

dict_1[iiii.split(" ")[0]]=iiii.split(" ")[1]

print dict_1

print int(dict_1[dict_1.keys()[0]])-int(dict_1[dict_1.keys()[1]])

cz=open(‘/home/text.txt‘,‘w‘)

cz.truncate()

cy=open(‘/home/text1.txt‘,‘w‘)

cy.truncate()

print ‘exit‘

client断

#!/usr/bin/python

#coding:utf8

import socket

import time

import telnetlib

def mem_status(ip,port):

print ip

print port

tn=telnetlib.Telnet(ip,port)

tn.set_debuglevel(1)

tn.write(‘dump /data0/logs/b.log‘+‘\n‘)

tn.write(‘quit‘+‘\n‘)

return ‘ok‘

def work_lines(file):

print file

open_file=open(file,‘r‘)

print open_file

file_lines=open_file.readlines()

return file_lines

c=socket.socket(socket.AF_INET,socket.SOCK_STREAM)

c.connect((‘10.13.144.224‘,9999))

file=‘/data0/logs/b.log‘

rec=c.recv(1024)

if rec == ‘10.13.144.224‘:

return_value=mem_status(‘10.67.15.11‘,22224)

time.sleep(10)

if return_value:

a=open(‘/data0/logs/b.log‘,‘r‘)

file_lines=a.readlines()

over=‘10.67.15.11‘+‘ ‘+str(len(file_lines))

print over

#over=‘10.13.144.224‘,str(len(file_lines))

c.send(str(over))

时间: 2024-10-12 13:43:06

scoket多线程例子的相关文章

Java多线程例子讲解

一:知识点声明: 1.区别进程和线程:进程是静态概念,它的执行依赖线程进行. 2.进程的状态:就绪(等待cpu执行),运行,中止,阻塞(等待所需资源,进入阻塞态) 3.Java程序的main函数即是一个线程,被称做主线程.此时如果新建线程,则和主线程一起并行运行. 4.Java中的构造方法.main函数谁先执行? main函数先执行,因为main是静态方法,程序一开始就执行:而构造方法只有在类实例化时才去调用. 二:实例程序 public class GetCurrentThread imple

java 多线程例子

java 多线程例子 编写具有多线程能力的程序经常会用到的方法有: run(), start(), wait(), notify(), notifyAll(), sleep(), yield(), join() 还有一个重要的关键字:synchronized 本文将对以上内容进行讲解. 一:run() 和start() 示例1: public class ThreadTest extends Thread {public void run() {for (int i = 0; i < 10; i

[转]一个简单的Linux多线程例子 带你洞悉互斥量 信号量 条件变量编程

一个简单的Linux多线程例子 带你洞悉互斥量 信号量 条件变量编程 希望此文能给初学多线程编程的朋友带来帮助,也希望牛人多多指出错误. 另外感谢以下链接的作者给予,给我的学习带来了很大帮助 http://blog.csdn.net/locape/article/details/6040383 http://www.cnblogs.com/liuweijian/archive/2009/12/30/1635888.html 一.什么是多线程? 当我自己提出这个问题的时候,我还是很老实的拿着操作系

Linux多进程多线程例子

看了apue3,关于进程线程和进程间通信写了一个例子,方便自己理解相关知识,备忘. 1 #include <stdlib.h> 2 #include <stdio.h> 3 #include <unistd.h> 4 #include <pthread.h> 5 #include <sys/types.h> 6 #include <sys/ipc.h> 7 #include <sys/shm.h> 8 #include &

C之多线程(例子很不错)

1.线程 线程池是一个树状结构. 多线程解决并发问题. 一个线程内部的执行顺序是线性的.而线程之间是乱序的. 若要创建一个多线程程序,它的参数必须是空指针类型. 变色龙程序: #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include <stdlib.h> #include <Windows.h> #include<process.h>//进程 #include <time.h> void

一个简单的java多线程例子

现在有这样一个任务,有一份手机号列表(20W),有一份话单的列表(10W),要统计哪些手机号没有出现在话单中,哪些手机号在话单中出现了不止一次. 想到的最直接的方式,就是两层循环去遍历,虽然此方法比较笨,但目前还没有想出更好的办法. 一开始使用单线程来处理,代码是随手写的并没有进行重构,只是做一个简单的说明: package tool; import java.util.List; public class SingleThread { public static void main(Strin

[转]java多线程例子

1.  代码实例 这里我们做一个完整的例子来说明线程产生的方式不同而生成的线程的区别: package com.example.ThreadTestDemo; public class ThreadTest extends Thread { public static void main(String[] args) throws Exception{ for(int i=0;i<10;i++){ Thread t = new MyThread(); t.start(); } Thread.sl

CLR via C#中的一个多线程例子

parallel的For和ForEach方法有一些重载版本允许传递三个委托 1.任务局部初始化委托(localInit),未参与工作的每一个任务都调用一次委托,在任务被要求处理前调用. 2.主体委托(body),为参与工作的各个线程锁处理的酶一项都调用一次该委托. 3.任务局部终结委托(localFinially),为参与工作的每一个任务都调用一次委托.这个委托实在任务处理好派遣给它的所有工作项之后调用的.即使主体委托代码引发的  一个未处理的异常,也会调用它. 演示如何利用三个委托,计算目录中

Java学习——多线程例子:李四王五

package cys; public class Example9_2 { public static void main(String[] args) { // TODO Auto-generated method stub People personal1,personal2; StringBuffer str=new StringBuffer(); personal1 = new People("李四",str); personal2 = new People("王五