标签: send

为什么假设send可能返回的数据少于在阻塞套接字上传输的请求数据?

在流套接字上发送数据的标准方法一直是调用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.

c sockets coding-style send

20
推荐指数
1
解决办法
5801
查看次数

将HTML电子邮件发送给自己测试它们的快速简便方法是什么?

我被赋予了为不同的电子邮件/网络邮件客户端优化HTML电子邮件的任务.我曾经通过在Outlook Express中做一个技巧测试HTML文件,使其发送原始HTML,但微软似乎已经停止提供Outlook Express(我认为"Live Mail"应该替换它).

所以我的问题是,是否有一种简单,快速的方式来发送HTML电子邮件?也许甚至是一个免费的程序来完成这项工作?

html email testing send

19
推荐指数
2
解决办法
3万
查看次数

如何使用applescript发送imessage文本,仅在提供的服务中发送?

有人可以告诉我如何通过消息应用程序直接向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)

我只需要通过iMe​​ssage向帐户发送消息,而不是通过Google Talk,AIM,bonjour.谢谢!

applescript messages send imessage

18
推荐指数
3
解决办法
5万
查看次数

Android,如何发送HTML电子邮件并强制Android通过G-Mail发送它而不是其他应用程序?

我想通过我的申请发送电子邮件.我需要通过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)

email android send android-intent

17
推荐指数
2
解决办法
2万
查看次数

使用C TCP套接字,可以'发送'返回零吗?

send使用TCP套接字时,C 函数是否可能返回零?手册页只是说它将返回发送的字节数,但我不确定它是否只会在无法发送任何数据时返回-1.

c sockets tcp return-value send

16
推荐指数
2
解决办法
2万
查看次数

SFTP使用bash脚本发送文件

我正在使用密钥身份验证,因此密码不是问题.我有一个名字我知道的文件,我只是想通过sftp将它发送到另一台机器.

我试过搜索但无法在任何地方找到这个(看似简单的)问题.也许我的谷歌今天只是让我失望.

简而言之:我在我的本地机器上,想要将文件(test.txt)发送到远程机器.已提供授权密钥.基本上我想自动化这三个步骤:

sftp root@remote:/root/dropoff
put test.txt
quit
Run Code Online (Sandbox Code Playgroud)

是否有一个简单的bash命令可用于自动执行此操作?我见过的唯一选择是使用bash脚本执行put/quit并使用-b选项运行它.有没有比这更清洁的东西?(我对使用任何其他应用程序/工具不感兴趣.)

谢谢!

bash sftp file send

16
推荐指数
3
解决办法
5万
查看次数

C,sendfile()和send()的区别?

sendfile()在内核空间中的两个文件描述符之间复制数据.在某个地方,我看到如果你在Linux中用C编写Web服务器,你应该使用send()和recv()而不是使用write()和read().那么send()也使用内核空间吗?

无论我用什么发送 - sendfile()或send() - 在客户端我都会使用recv()吗?

另一方面,man page说:"send()和write(2)之间的唯一区别是标志的存在.使用零标志参数,send()等同于write(2)."

c linux send sendfile

16
推荐指数
1
解决办法
2万
查看次数

C#通过HTTP发送图像

我有一个用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)

我想我必须做一些文件流而不是字符串,但我真的没有胶水..

c# tcplistener image http send

15
推荐指数
1
解决办法
1万
查看次数

获取能够处理SEND意图的应用程序列表以显示在视图中(而不是弹出对话框)

我正在尝试获取能够处理SEND意图的手机上安装的所有应用程序的列表.我目前正在使用Intent.createChooser处理这种情况,但这不是我想要实现的,因为我希望能够访问应用程序列表以在我的活动中的View中显示它们,方式类似如何Android库存图库应用程序显示它们而不是在微调器对话框中.

屏幕截图可在此处获取:http://i.stack.imgur.com/0dQmo.jpg

任何帮助将不胜感激.

android share send android-intent

15
推荐指数
2
解决办法
8638
查看次数

如何在PHP中发送单选按钮值

我正在努力将radiobutton的价值发送到电子邮件.

我已编码2个radiobuttons,我已将第一个设置为默认选中.

表单和值工作,但不提交单选按钮值.

任何明智的话?

php send radio-button

14
推荐指数
3
解决办法
13万
查看次数