V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  sbmzhcn  ›  全部回复第 11 页 / 共 12 页
回复总数  232
1 ... 3  4  5  6  7  8  9  10  11  12  
2014 年 12 月 22 日
回复了 sbmzhcn 创建的主题 Python python 实现 TCPServer
class DebuggingServer(SMTPServer):
# Do something with the gathered message
def process_message(self, peer, mailfrom, rcpttos, data):
inheaders = 1
lines = data.split('\n')
print '---------- MESSAGE FOLLOWS ----------'
for line in lines:
# headers first
if inheaders and not line:
print 'X-Peer:', peer[0]
inheaders = 0
print line
print '------------ END MESSAGE ------------'

指以上代码中。
2014 年 12 月 22 日
回复了 sbmzhcn 创建的主题 Python python 实现 TCPServer
@mengzhuo 再次提问,不好意思。在示例process_message 中的 process_message, 我如果直接把数据写入mysql会不会出现问题,比如性能问题?
2014 年 12 月 20 日
回复了 sbmzhcn 创建的主题 Python python 实现 TCPServer
@mengzhuo 非常感谢你的代码,能具体再和我说说这段代码吗?

with Timeout(self.timeout, ConnectionTimeout):
sc = DSCChannel(self, sock, addr, self.data_size_limit)

这段代码是不是必须会超时。我需要服务器一直不停的接收,不中断,但我测试你的代码,无论怎么样总会超时。
2014 年 12 月 20 日
回复了 sbmzhcn 创建的主题 Python struct pack 问题,与文档上的结果不一样
@savebox 怎么解决,我现在需要 pack('h', 16) 的结果是 \x00\x10 但它的结果总是 \x10\x00
2014 年 12 月 20 日
回复了 sbmzhcn 创建的主题 Python struct pack 问题,与文档上的结果不一样
@casparchen 是不一样,你没看到上面的代码有问题吗, 1 pack的结果应该是 \x00\x01 但实际却是\x01\x00,

原文档: unpack('hhl', '\x00\x01\x00\x02\x00\x00\x00\x03') 结果是(1, 2, 3)
我的unpack('hhl', '\x00\x01\x00\x02\x00\x00\x00\x03') 结果是(256, 512, 50331648)
2014 年 12 月 18 日
回复了 sbmzhcn 创建的主题 Python python 实现 TCPServer
非常感谢大家的回复, 看到大家的回复都比较专业,看来这样的应用还是应该花钱让公司找人去做,目前并不太可能有超过上百个设备的,那是以后的事了,现在这个问题还没有很好的解决,实现的过程很简陋,虽然也能接收数据,发送数据但感觉不太优雅。

目前如果按照我上面的代码,如何实现把每个连接放在一个列表里,并且可以随时操作其中一个连接。当前连接应该包含设备的id, ip, 等一些信息。
2014 年 12 月 10 日
回复了 sbmzhcn 创建的主题 Python Python3 下批量管理 SSH(VPS)的好用工具?
使用了https://github.com/paramiko/paramiko 还不错,可以批量操作远程VPS。
2014 年 12 月 8 日
回复了 sbmzhcn 创建的主题 Google chrome 扩展需要交 5 美元,如何解决?
Uh oh. There was a problem.

We couldn't start your purchase because of a technical issue.
Details of the problem below:
Sorry, we were unable to process this request. Any charge will be automatically cancelled within 24 hours. Please try again after 24 hours.

支付时,出现以上问题。
2014 年 12 月 7 日
回复了 mornlight 创建的主题 Google 现在注册 Chrome Web Store 开发者最便捷的方式是什么?
@mornlight 搞定的话告诉我下。
2014 年 11 月 28 日
回复了 liuyi_beta 创建的主题 分享发现 可以登录网页版 iCloud 查看手机照片了。
从itunes同步的照片将会被移除 这个什么意思,是不是点击确定后,我相机上的照片就被会移除了,它提示我要 将移除 4xx张照片。
求问,有没有这样操作过的,后果是什么?
2014 年 11 月 22 日
回复了 sbmzhcn 创建的主题 Linux sed 将文件中的最后一行之后加上一句话
@msg7086 我用这是想改动现有文件,文件不一定存在。
@blacktulip 你说的对,是能用这实现,我有些也是用这实现的。
2014 年 11 月 21 日
回复了 sbmzhcn 创建的主题 Linux sed 将文件中的最后一行之后加上一句话
@msg7086 echo 是显示到屏幕, 不是吗,有个sed可以解决,为什么一定要用echo. 这些功能是在一个脚本中的,这个脚本的功能需要这样做。
2014 年 11 月 21 日
回复了 sbmzhcn 创建的主题 Linux sed 将文件中的最后一行之后加上一句话
@q378648220 @fising @oott123 没用echo是因为不想在控制台显示。文件也不一定存在,这是脚本中的一句,我测试的时候使用echo否符合我想要的结果。

sed -i "\$aTEXTAPPEND” file 解决。
2014 年 11 月 21 日
回复了 sbmzhcn 创建的主题 Python 动态调用类,需要时才加载相应的类
@ryd994 能详细说说吗,我就是想把可变的做成数据,不可变的提出来。如果有什么示例就好了,我可以研究下。
2014 年 10 月 28 日
回复了 sbmzhcn 创建的主题 程序员 求 c#下的使用 socks 下载网页程序
@mengskysama 首先必须用.net,因为要求开发C#的程序,二是我也不想这样实现,但这样实际有几个原因,一是使用这样的实现 可以使用socket代理,不知道其它的httpwebrequest有什么办法可以直接使用socket代理。我知道很少有人这样实现,所以才这样问,有没有这样的代码,就因为这样的代码很少,我才问的。你说的我也理解。
2014 年 10 月 24 日
回复了 sbmzhcn 创建的主题 程序员 求 c#下的使用 socks 下载网页程序
'''
#region page source analytics
private void AnalyPageSource(MemoryStream ms,
out WebHeaderCollection responseHeaders,
out string pageContent)
{
byte[] bytes = ms.ToArray();
StringBuilder string_buffer = new StringBuilder();
byte[] contentBytes = new byte[bytes.Length];

responseHeaders = new WebHeaderCollection();
pageContent = string.Empty;
// process headers
for (int i = 0; i < bytes.Length; i++)
{
string_buffer.Append((char)bytes[i]);
if (string_buffer.ToString().ToLower().IndexOf("\r\n\r\n") != -1)
{
int index = string_buffer.ToString().IndexOf("\r\n\r\n");
string originalheaderString = string_buffer.ToString().Substring(0, index);
Header = originalheaderString;

//Array.Copy(bytes, index + 4, contentBytes, 0, ms.Length - index - 4);
Array.Copy(bytes, index + 4, contentBytes, 0, bytes.Length - index - 4);
string originalPageContent = Encoding.UTF8.GetString(contentBytes);

string responseState = "";
string[] headers = originalheaderString.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
foreach (string item in headers)
{
if ( item.StartsWith( "Set-Cookie:", StringComparison.OrdinalIgnoreCase ))
{
string tCookie = item.Substring(11, item.IndexOf(";") < 0 ? item.Length - 11 : item.IndexOf(";") - 10).Trim();
if ( !this.Cookies.Exists( f => f.Split( '=' )[0] == tCookie.Split( '=' )[0] ) )
{
this.Cookies.Add( tCookie );
}
}
int colonIndex = item.IndexOf(":");
if (colonIndex > -1)
responseHeaders.Add(item.Substring(0, colonIndex).Trim(), item.Substring(colonIndex + 1).Trim());
else
responseState = item;
}
StatusCode = responseState.Split(' ')[1];

if (responseState.IndexOf(" 302 ") != -1 || responseState.IndexOf(" 301 ") != -1)
{
if (responseHeaders["Location"] != null)
{
try { ResponseUri = new Uri(responseHeaders["Location"]); }
catch { ResponseUri = new Uri(ResponseUri, responseHeaders["Location"]); }
}
}

ContentType = Headers["Content-Type"];
if (Headers["Content-Length"] != null)
ContentLength = int.Parse(Headers["Content-Length"]);
KeepAlive = (Headers["Connection"] != null && Headers["Connection"].ToLower() == "keep-alive") ||
(Headers["Proxy-Connection"] != null && Headers["Proxy-Connection"].ToLower() == "keep-alive");

try
{
if (!String.IsNullOrEmpty(responseHeaders[HttpResponseHeader.TransferEncoding]))
{
if (responseHeaders[HttpResponseHeader.TransferEncoding].Contains("chunked"))
{
contentBytes = ChunkedDecompress(contentBytes);
}
}
}
catch (Exception ex)
{
throw new Exception("处理chunked数据失败:" + ex);
}
try
{
if (!String.IsNullOrEmpty(responseHeaders[HttpResponseHeader.ContentEncoding]))
{
if (responseHeaders[HttpResponseHeader.ContentEncoding].Contains("gzip")
|| responseHeaders[HttpResponseHeader.ContentEncoding].Contains("deflate"))
{
pageContent = GzipDecompress(contentBytes);
}
}
else
{
pageContent = Encoding.UTF8.GetString(contentBytes);
}
}
catch (Exception ex)
{
throw new Exception("GzipDecompress Error: " + ex.Message);
}

if (string.IsNullOrEmpty(pageContent) && !string.IsNullOrEmpty(originalPageContent))
{
pageContent = originalPageContent;
}
break;
}
}
}
#endregion
'''

这是我代码中的一部分,为什么我没觉得那么简单呢。
1 ... 3  4  5  6  7  8  9  10  11  12  
关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   1191 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 31ms · UTC 17:47 · PVG 01:47 · LAX 09:47 · JFK 12:47
♥ Do have faith in what you're doing.