在流套接字上发送数据的标准方法一直是调用send和一大块数据来写,检查返回值以查看是否所有数据都已发送,然后再次调用send直到整个消息被接受为止.
例如,这是一个常见方案的简单示例:
int send_all(int sock, unsigned char *buffer, int len) {
int nsent;
while(len > 0) {
nsent = send(sock, buffer, len, 0);
if(nsent == -1) // error
return -1;
buffer += nsent;
len -= nsent;
}
return 0; // ok, all data sent
}
甚至BSD手册也提到了这一点
...如果套接字上没有可用的消息空间来保存要传输的消息,则send()通常会阻塞 ...
这表明我们应该假设send可以在不发送所有数据的情况下返回.现在我发现这个相当破碎,但即使是W. Richard Stevens在他的标准参考书中假定这是关于网络编程的,而不是在开头的章节中,但更高级的例子使用他自己的写(写所有数据)函数而不是调用write.
现在我认为这仍然或多或少被破坏,因为如果send无法传输所有数据或接受底层缓冲区中的数据并且套接字阻塞,则send应该阻塞并在整个发送请求被接受时返回.
我的意思是,在上面的代码示例中,如果send返回的数据发送的数量较少,那么将使用新请求再次调用它.自上次通话以来有什么变化?最多几百个CPU周期已经过去,因此缓冲区仍然是满的.如果发送现在接受数据,为什么它不能接受它?
否则我们将以低效循环结束upp,我们试图在无法接受数据并继续尝试的套接字上发送数据,否则?
因此,如果需要,似乎解决方法会导致代码效率极低,并且在这些情况下应该避免阻塞套接字,而应该使用非阻塞套接字和select.
我被赋予了为不同的电子邮件/网络邮件客户端优化HTML电子邮件的任务.我曾经通过在Outlook Express中做一个技巧测试HTML文件,使其发送原始HTML,但微软似乎已经停止提供Outlook Express(我认为"Live Mail"应该替换它).
所以我的问题是,是否有一种简单,快速的方式来发送HTML电子邮件?也许甚至是一个免费的程序来完成这项工作?
有人可以告诉我如何通过消息应用程序直接向iMessage用户发送消息吗?
tell application "Messages"
if service type of service of buddy whose name is ("Name here" is "iMessage") then set x to 1
if service type of service of buddy whose name is ("Name here" is "iMessage") then set x to 2
if service type of service of buddy whose name is ("Name here" is "iMessage") then set x to 3
send "Message" to buddy "mail of name" of service x
end tell
Run Code Online (Sandbox Code Playgroud)
我只需要通过iMessage向帐户发送消息,而不是通过Google Talk,AIM,bonjour.谢谢!
我想通过我的申请发送电子邮件.我需要通过G-Mail发送基于HTML的电子邮件.我找到了以下解决方案,每个解决方案都有利有弊.
1)使用Intent(Intent.ACTION_SEND).这是非常简单的方式,我可以看到我的身体HTML格式,但问题是当我点击"发送电子邮件"按钮,因此很多应用程序,如Facebook和Google+弹出,这是无用的,我不应该在该列表中显示它.这是它的代码:
String html = "<!DOCTYPE html><html><body><a href=\"http://www.w3schools.com\" target=\"_blank\">Visit W3Schools.com!</a>" + "<p>If you set the target attribute to \"_blank\", the link will open in a new browser window/tab.</p></body></html>";
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_EMAIL, new String[] {"MY EMAIL ADDRESS"});
intent.putExtra(Intent.EXTRA_SUBJECT, "subject here");
intent.putExtra(Intent.EXTRA_TEXT, Html.fromHtml(html));
startActivity(Intent.createChooser(intent, "Send email..."));
Run Code Online (Sandbox Code Playgroud)

2)使用Intent(Intent.ACTION_SENDTO).这样过滤无用的应用程序,并向我显示邮件客户端.但它不会在gmail客户端中以HTML格式显示我的电子邮件.当我发送电子邮件时,一些客户端以HTML格式显示正文,而其他客户端不识别HTML,我的链接表现得像纯文本.这段代码如下:
String html = "<!DOCTYPE html><html><body><a href=\"http://www.w3schools.com\" target=\"_blank\">Visit W3Schools.com!</a>" + "<p>If you set the target attribute to \"_blank\", the link will open in a new browser window/tab.</p></body></html>";
Intent send = new Intent(Intent.ACTION_SENDTO); …Run Code Online (Sandbox Code Playgroud) send使用TCP套接字时,C 函数是否可能返回零?手册页只是说它将返回发送的字节数,但我不确定它是否只会在无法发送任何数据时返回-1.
我正在使用密钥身份验证,因此密码不是问题.我有一个名字我知道的文件,我只是想通过sftp将它发送到另一台机器.
我试过搜索但无法在任何地方找到这个(看似简单的)问题.也许我的谷歌今天只是让我失望.
简而言之:我在我的本地机器上,想要将文件(test.txt)发送到远程机器.已提供授权密钥.基本上我想自动化这三个步骤:
sftp root@remote:/root/dropoff
put test.txt
quit
Run Code Online (Sandbox Code Playgroud)
是否有一个简单的bash命令可用于自动执行此操作?我见过的唯一选择是使用bash脚本执行put/quit并使用-b选项运行它.有没有比这更清洁的东西?(我对使用任何其他应用程序/工具不感兴趣.)
谢谢!
sendfile()在内核空间中的两个文件描述符之间复制数据.在某个地方,我看到如果你在Linux中用C编写Web服务器,你应该使用send()和recv()而不是使用write()和read().那么send()也使用内核空间吗?
无论我用什么发送 - sendfile()或send() - 在客户端我都会使用recv()吗?
另一方面,man page说:"send()和write(2)之间的唯一区别是标志的存在.使用零标志参数,send()等同于write(2)."
我有一个用C#编写的小型HTTP服务器,直到现在我只需要将原始文本发送回发件人.但现在我必须发送一个JPG-Image,我不知道如何.
这就是我现在拥有的:
// Read the HTTP Request
Byte[] bReceive = new Byte[MAXBUFFERSIZE];
int i = socket.Receive(bReceive, bReceive.Length, 0);
//Convert Byte to String
string sBuffer = Encoding.ASCII.GetString(bReceive);
// Look for HTTP request
iStartPos = sBuffer.IndexOf("HTTP", 1);
// Extract the Command without GET_/ at the beginning and _HTTP at the end
sRequest = sBuffer.Substring(5, iStartPos - 1 - 5);
String answer = handleRequest(sRequest);
// Send the response
socket.Send(Encoding.UTF8.GetBytes(answer));
Run Code Online (Sandbox Code Playgroud)
我想我必须做一些文件流而不是字符串,但我真的没有胶水..
我正在尝试获取能够处理SEND意图的手机上安装的所有应用程序的列表.我目前正在使用Intent.createChooser处理这种情况,但这不是我想要实现的,因为我希望能够访问应用程序列表以在我的活动中的View中显示它们,方式类似如何Android库存图库应用程序显示它们而不是在微调器对话框中.
屏幕截图可在此处获取:http://i.stack.imgur.com/0dQmo.jpg
任何帮助将不胜感激.
我正在努力将radiobutton的价值发送到电子邮件.
我已编码2个radiobuttons,我已将第一个设置为默认选中.
表单和值工作,但不提交单选按钮值.
任何明智的话?
send ×10
c ×3
android ×2
email ×2
sockets ×2
applescript ×1
bash ×1
c# ×1
coding-style ×1
file ×1
html ×1
http ×1
image ×1
imessage ×1
linux ×1
messages ×1
php ×1
radio-button ×1
return-value ×1
sendfile ×1
sftp ×1
share ×1
tcp ×1
tcplistener ×1
testing ×1