通过Internet发送数据

时间:2008-11-26 21:28:11

标签: c++ networking

我要求通过互联网发送大约100字节的数据。我的机器连接到互联网。 我可以通过发送请求和接收响应来使用HTTP。 但我的要求只是发送数据而不是接收响应。 我正在考虑使用UDP客户端服务器程序。但要做到这一点,我需要在互联网上托管UDP客户端?

还有其他办法吗?

有什么建议吗?

9 个答案:

答案 0 :(得分:4)

互联网上发生的任何事情都需要客户端和服务器。

一个框是客户角色,另一个框是您特定事务的服务器角色。

通常(但并非总是)您的本地方框是客户端,而其他一些方框则是服务器。

必须在两者上运行软件才能实现一些交换数据的协议。

服务器可以侦听TCP或UDP套接字,但有一些限制。某些端口号具有特权。防火墙会阻止某些端口号。

端口80虽然很少被防火墙阻止,但却是一个特权端口。通常,您需要Web服务器(例如,Apache)或权限来侦听端口80。

“发送100个字节”可以使用许多可用的协议来完成:Echo,Telnet,FTP,HTTP等等。

答案 1 :(得分:3)

在互联网上发送100字节数据的廉价答案。

C:\Windows\system32>ping -n 1 -l 100 -4 google.com

Pinging google.com [209.85.171.99] with 100 bytes of data:
Reply from 209.85.171.99: bytes=56 (sent 100) time=174ms TTL=233

Ping statistics for 209.85.171.99:
    Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 174ms, Maximum = 174ms, Average = 174ms

答案 2 :(得分:2)

HTTP的一大优势是端口80经常是开放的。使用其他协议,您必须依赖运营商来打开端口。

答案 3 :(得分:2)

为了发送数据但没有收到响应,您可以简单地编写程序,使其不会收听响应。这并不意味着不会发送给你,只是你不会得到它。

例如,您可以确保不在套接字上调用“recv”。此外,您可以使用“shutdown”禁用对套接字的读取。根据底层实现,进入“关闭”路由可能会导致所有传入的数据包被丢弃。

至于如何发送数据包,实际上任何类型的协议都可以工作。当然,您需要知道Internet上的目标服务器,但是您有很多选择。也许最简单的方法就是你所建议的:HTTP(也许使用www.google.com作为目标服务器)。

答案 4 :(得分:1)

您需要一个客户端(您)和一个服务器(另一端)。对于UDP,您通过Internet发送数据报(使用IP)。 UDP不提供TCP的安全性,但不需要响应(但这些响应是其协议的一部分,而不是您的协议)。

我建议使用TCP来为您节省一些麻烦。

此外,请确保您不在防火墙后面,否则您的数据包将无法按照您的预期到达目的地。

答案 5 :(得分:1)

嗯...

您希望通过互联网发送短信,但没有任何回复。

你的应用程序绝不会是某种间谍软件,不是吗?

答案 6 :(得分:1)

使用UDP。打开套接字,发送数据,关闭套接字。而已。这是客户端的Python版本:

import socket
data = 100*'x'
address = ('192.168.0.123', 8080)    # Host, port
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)    # UDP   
sock.connect(address)
sock.send(data)
sock.close()

Wikipedia page about UDP上有一些相应的WinSock代码。 当然另一方必须是可以访问的,并且必须有人在那里监听,否则目标机器将回复ICMP“端口不可达”数据包(至少如果它符合标准)。

答案 7 :(得分:0)

如果您想在互联网上使用UDP侦听器,则必须在某处托管。

您可以更轻松地获取HTTP托管,无处不在,UDP可能需要您自己的机器或至少是VM。

答案 8 :(得分:0)

curl是一个命令行工具,用于使用URL语法传输数据,支持DICT,FILE,FTP,FTPS,Gopher,HTTP,HTTPS,IMAP,IMAPS,LDAP,LDAPS,POP3,POP3S,RTMP,RTSP,SCP,SFTP ,SMTP,SMTPS,Telnet和TFTP。 curl支持SSL证书,HTTP POST,HTTP PUT,FTP上传,基于HTTP表单的上传,代理,cookie,用户+密码认证(基本,摘要,NTLM,协商,kerberos ......),文件传输恢复,代理隧道和大量其他有用的技巧。

See examples here