如下所示,我想与特定IP范围内的许多PC进行通信.
My PC ---+------> Client A PC
+------> Client B PC
+------> Client C PC
.................
+------> Client Z PC
Run Code Online (Sandbox Code Playgroud)
因为有太多客户端要沟通,所以我尝试了多线程.socket.connect()不断产生超时错误.如果我在单线程中尝试它,那就没问题了.
我用Google搜索并找到了以下内容:
说在某些平台上,套接字模块可能是线程不安全的.
所以我将代码更改为多处理.但是它仍然会产生相同的错误.
在以下代码示例中,test_single()完成正常.test_mp()和test_mt()都会导致超时错误.
你有没有经历过这种异常行为?测试环境是Windows XP SP3,python 2.5.4.还尝试了python 2.6.6和2.7.0,同样的错误.
import multiprocessing
import Queue
import socket
import threading
PROCESS_NUM = 5
PORT = 8888
def search_proc(ip):
try:
csock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
csock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
csock.settimeout(5.0)
csock.connect((ip, PORT))
csock.shutdown(socket.SHUT_RDWR)
csock.close()
return ip, "ok"
except socket.error, msg:
return ip, "fail", msg
def mp_connect(ip_range):
pool = multiprocessing.Pool( PROCESS_NUM )
for output in …Run Code Online (Sandbox Code Playgroud) 我们有一些数据表示在不同情况下的许多模型运行.对于单个场景,我们希望显示平滑的平均值,其中填充区域表示特定时间点的标准偏差,而不是平滑拟合的质量.
例如:
d <- as.data.frame( rbind( cbind( 1:20, 1:20,1 ), cbind(1:20, -1:-20,2 ) ) )
names(d)<-c("Time","Value","Run")
ggplot( d, aes(x=Time,y=Value) ) + geom_line( aes(group=Run) ) + geom_smooth()
Run Code Online (Sandbox Code Playgroud)
生成一个图表,其中表示两次运行,平滑均值,但即使运行之间的SD增加,平滑的条形也保持相同的大小.我想让更平滑的环绕代表给定时间步长的标准偏差.
考虑到许多不同的运行和输出变量,是否存在非劳动密集型的方法?
我在WPF线元素上创建了一个装饰器,因为需要添加一些文本.
现在,当移动此行时,装饰器不会自动"跟随"该行.事实上,它没有刷新itsef:

这里黑色曲线是控制图,红色"120米"是装饰图.
一些代码
void SegmentLine_Loaded(object sender, RoutedEventArgs e)
{
AdornerLayer aLayer = AdornerLayer.GetAdornerLayer(this);
if (aLayer != null)
{
aLayer.Add(new TextAdorner(this));
}
}
class TextAdorner : Adorner
{
public TextAdorner(UIElement adornedElement)
: base(adornedElement)
{
}
protected override void OnRender(DrawingContext drawingContext)
{
SegmentLine segment = (this.AdornedElement as SegmentLine);
if (segment != null)
{
Rect segmentBounds = new Rect(segment.DesiredSize);
var midPoint = new Point(
(segment.X1 + segment.X2) / 2.0,
(segment.Y1 + segment.Y2) / 2.0);
var lineFont = // get line font as …Run Code Online (Sandbox Code Playgroud) 我有一个csv文件,其中每行定义给定建筑物中的房间.与房间一起,每排都有一个场地.我要提取的是所有建筑物的所有楼层.
我的文件看起来像这样......
"u_floor","u_room","name"
0,"00BDF","AIRPORT TEST "
0,0,"BRICKER HALL, JOHN W "
0,3,"BRICKER HALL, JOHN W "
0,5,"BRICKER HALL, JOHN W "
0,6,"BRICKER HALL, JOHN W "
0,7,"BRICKER HALL, JOHN W "
0,8,"BRICKER HALL, JOHN W "
0,9,"BRICKER HALL, JOHN W "
0,19,"BRICKER HALL, JOHN W "
0,20,"BRICKER HALL, JOHN W "
0,21,"BRICKER HALL, JOHN W "
0,25,"BRICKER HALL, JOHN W "
0,27,"BRICKER HALL, JOHN W "
0,29,"BRICKER HALL, JOHN W "
0,35,"BRICKER HALL, JOHN W "
0,45,"BRICKER HALL, JOHN W …Run Code Online (Sandbox Code Playgroud) 您将如何在以下任何可以处理Python/Haskell/CoffeScript样式缩进的分析器生成器(PEG.js,Citrus,Treetop)中编写解析表达式语法:
尚未存在的编程语言的示例:
square x =
x * x
Run Code Online (Sandbox Code Playgroud)
cube x =
x * square x
Run Code Online (Sandbox Code Playgroud)
fib n =
if n <= 1
0
else
fib(n - 2) + fib(n - 1) # some cheating allowed here with brackets
Run Code Online (Sandbox Code Playgroud)
更新: 不要尝试为上面的示例编写解释器.我只对缩进问题感兴趣.另一个例子可能是解析以下内容:
foo
bar = 1
baz = 2
tap
zap = 3
# should yield (ruby style hashmap):
# {:foo => { :bar => 1, :baz => 2}, :tap => { :zap => …Run Code Online (Sandbox Code Playgroud) 在不保留当前线程列表的情况下,我试图看到实时信号被传递到我的进程中的所有线程.我的想法是这样做:
pthread_sigmask为自己阻塞信号(使用),并重复进入循环调用,raise(sig)直到sigpending指示信号处于挂起状态(信号被阻止时没有剩余线程).我遇到的问题pthread_sigmask是没有得到尊重.如果我运行测试程序strace(可能是由于不同的调度时间),一切正常,但是一旦我单独运行它,发送者就会收到自己的信号(尽管已经阻止了它??)并且没有任何其他线程得到预定.
什么想法可能是错的?我尝试使用sigqueue而不是raise探测信号掩码,添加sleep所有地方以确保线程耐心地等待他们的信号等等,现在我不知所措.
编辑:感谢psmears的回答,我想我明白了这个问题.这是一个潜在的解决方案.反馈会很棒:
num_threads进程发送信号,然后为自己解除阻塞信号.num_threads返回.num_threads,然后它释放锁定.一个可能的问题是,如果内核内存不足,信号将不会排队(Linux似乎有这个问题).你知道sigqueue当它无法排队信号时是否可靠地通知呼叫者(在这种情况下我会循环直到它成功),或者信号可能会无声地丢失?
编辑2:它现在似乎正在运作.根据文档sigqueue,EAGAIN如果它无法排队信号,它将返回.但为了稳健性,我决定继续呼叫,sigqueue直到num_threads-1信号处理程序运行,sched_yield在我发送num_threads-1信号之后交错呼叫.
在线程创建时有一个竞争条件,计算新线程,但我用一个奇怪的(ab)使用读写锁解决了它.线程创建是"读取"而广播信号是"正在写入",因此除非有线程尝试广播,否则它不会在创建线程时产生任何争用.
这是场景:
我需要编写一个Android应用程序来创建一个带有蓝牙适配器的PC的RFCOMM插槽(我也要编写服务器).
我的要求是用户不必手动配对设备.
实际上,有一个大黑客,我正在使用createInsecureRfcommSocket.
一个小场景:我有一个Android应用程序,它与一个打开了RFCOMM套接字的Linux盒子交换信息.我可以在设备上手动设置PIN(硬编码是一种选择)
我正在寻找不同的道路:
编写JNI包装器
如已完成在这里的最大凯勒曼,我可以写一个JNI层,使所有配对阶段.这应该是一个不错的选择,但是有一个问题:
NDK 4b不提供libbluetooth库,因此-lbluetooth失败,以及NDK v.3.
选项:
使用API公开的内容
任何人都知道如何使用createRfcommSocketToServiceRecord并让用户不要手动配对设备?可能吗?我应该怎么写服务器?
我不知道的东西
也许(肯定!)有一些我不知道的东西.也许我可以用别的东西?不是RFCOMM?SDP?
也许我可以手动配对Android API?
我希望已经足够清楚,如果不是只是问.再次,因为这不是第一次,我在你的手中:)
感谢所有支持人员!
我正在编写一个网页,这是它在Firefox,Safari,Opera和Chrome中的外观.
删除了死的ImageShack链接
以及它在Internet Explorer中的外观(支撑你自己)
删除了死的ImageShack链接
Internet Explorer的Text-shadow在哪里?这真让我抓狂!正如你所看到的,这个页面有点依赖于它看起来不错(更不用说标题图像看起来像IE上的废话)
例如,我试过这个(http://pastebin.ca/1994660),它没有用.
这是代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<title>Jacob's CTF Highscores</title>
<!--[if IE]><style type="text/css">
</style>
<![endif]-->
<style>
body {
background: url("bg.png") #6d6d6d;
background-repeat:repeat-x;
filter: progid:DXImageTransform.Microsoft.DropShadow(
offx=1, offy=1, color=#000000);
}
#title {
background: url("title.png");
width:450px;
height:74px;
}
* {padding:0;margin:0;}
#mainwrap {
margin:0 auto;
width:800px;
}
.whole {
background: rgba(255, 255, 255, 0.5);
border:4px solid rgba(201, 201, 201, 0.5);
padding:5px;
margin-bottom:10px; …Run Code Online (Sandbox Code Playgroud) 我一直在谷歌上发布之前,但我还没有找到任何关于这个话题..但我不认为这是一个非常棘手的一个所以请原谅发布:o).
对于一份新工作我正在进入C++,并遵循一些教程.特别是一个是关于MFC,它显示了如何创建项目,选择MFC应用程序等.所以,我在Vista和Win 7上安装了Visual C++ Express 2010,两次都有同样的问题:当我去新项目时,我没有"MFC"菜单.该教程的一些截图,以及Visual C++ 2010上的其他一些截图清楚地表明它可以存在.更具体地说,在左上角我有"安装模板",然后是"Visual C++"和"CLR",Win32"和"General",没有MFC.
因为这些是"已安装的模板",我想我应该安装它,但我没有找到关于该主题的明确指示; 从我发现它应该或多或少从一开始就存在...我也找到了一种方法来通过创建一个Win32应用程序添加MFC DLL,但它似乎并没有完全相同的东西..我也花了一些时间在Visual C++的菜单,但没有找到任何明确的方法来添加像Eclipse中的新模板...
好吧,我希望我能说清楚,我认为这是非常基本的,但如果有人能帮助我,我会非常感激.
干杯文森特
我有这个代码:
void wait(int ms)
{
System.Threading.Thread.Sleep(ms);
}
private void button1_Click(object sender, RoutedEventArgs e)
{
info.Text = "step 1";
wait(1000);
info.Text = "step 2";
wait(1000);
info.Text = "step 3";
wait(1000);
info.Text = "step 4";
wait(1000);
}
Run Code Online (Sandbox Code Playgroud)
问题是textbox.text在整个void button1_Click完成后更新.它没有在AIR上更新:(
拜托,怎么办?