草庐IT

Socket_recv

全部标签

linux - socket()系统调用中参数protocol代表什么?

http://linux.die.net/man/2/socketTheprotocolspecifiesaparticularprotocoltobeusedwiththesocket.Normallyonlyasingleprotocolexiststosupportaparticularsockettypewithinagivenprotocolfamily,inwhichcaseprotocolcanbespecifiedas0.However,itispossiblethatmanyprotocolsmayexist,inwhichcaseaparticularprotoco

C++ TCP recv 未知缓冲区大小

我想使用函数recv(socket,buf,len,flags)来接收传入的数据包。但是我在运行前不知道这个数据包的长度,所以前8个字节应该告诉我这个数据包的长度。我不想只分配一个任意大的len来完成这个所以是否可以设置len=8有buf是一个类型uint64_t。之后memcpy(dest,&buf,buf)? 最佳答案 由于TCP是基于流的,所以我不确定您指的是什么类型的包。我假设您指的是应用程序级包。我的意思是包是由您的应用程序定义的,而不是由像TCP这样的底层协议(protocol)定义的。为了避免混淆,我将称它们为消息。我

python - 在 python 中读取套接字时,os.read 和 socket.recv 之间有什么区别吗?

假设我有一个socket。这两行代码有什么区别?第1行:os.read(some_socket.fileno(),1024)第2行:some_socket.recv(1024)...除了第一个不能在Windows上运行的事实。换句话说,我可以用第二行代替第一行吗?我有一个代码库还没有真正用Windows测试过,这导致了麻烦。 最佳答案 第1行使用带下划线的文件描述符来读取套接字,因此它是平台相关的。使用第2行,因为它是一种可移植的、多平台的方式来完成同样的事情。强制性:如果您正在做任何严肃的事情,最好避免处理低级套接字。他们很难做到

java - java.net.Socket.setSoTimeout 靠谱吗?

来自setSoTimeout的JavaDocEnable/disableSO_TIMEOUTwiththespecifiedtimeout,inmilliseconds.Withthisoptionsettoanon-zerotimeout,aread()callontheInputStreamassociatedwiththisSocketwillblockforonlythisamountoftime.Ifthetimeoutexpires,ajava.net.SocketTimeoutExceptionisraised,thoughtheSocketisstillvalid.Th

json - 通过 Socket 流式传输一系列 JSON 字符串

这可能更多地是关于socket/tcp行为,而不是node.js。我正在用node.js编写一个服务器,它通过套接字(不是HTTP)接收一系列字符串化的JSON对象。客户端(iOS应用程序)通过此套接字流式传输JSON字符串。每个JSON字符串的大小各不相同(从几字节到几千字节),时间也是如此。每个JSON字符串将通过单个“写入”操作发送。当我从套接字接收数据时,我调用JSON.parse()。简单的测试用例效果很好,但我不确定这是否足够。我想知道我是否需要担心以下情况,(1)'data'包含多个JSON对象(2)单个JSON对象通过多个数据发送。 最佳答案

建立连接后,Python TCP socket.recv() 什么都不返回

我正在尝试实现最基本的pythonTCP服务器。Windows8,Python2.7,防火墙关闭。代码来自这里:https://wiki.python.org/moin/TcpCommunication如果我通过pythonrepl执行客户端操作(socket(...)、connect(...)、send(...)),一切正常,即服务器正确调用recv时阻塞。但是,如果我通过python脚本运行完全相同的代码(无论是否在Windows命令行显式调用python.exe),recv都会立即返回,但没有数据。我在其他地方读到这意味着它是一个无效的套接字,但我不确定这意味着什么或如何检查它。

Java程序通过socket接口(interface)与邮件服务器建立TCP连接并发送邮件

我正在编写一个Java程序,它通过套接字接口(interface)与邮件服务器建立TCP连接,并发送一封电子邮件。我遇到的问题是,当我在命令行上运行它时,它会在写入“MAILFROM:”后停止。我没有收到任何错误,它只是在那时停止了。我不知道我做错了什么所以任何帮助将不胜感激importjava.io.*;importjava.net.*;publicclassEmailSender{publicstaticvoidmain(String[]args)throwsException{//EstablishaTCPconnectionwiththemailserver.Socketsoc

perl - IO::Socket 与 Socket 我都是 "use"吗?

我正在为我的网络类(class)编写一个小程序,但遇到了一些困惑。我目前的工作正常,但我发现我发现的perl网络示例之间存在一些不一致。有的人导入了Socket模块,有的人导入了IO::Socket模块。更令人困惑的是,有些同时导入了Socket和IO::Socket。有道理吗?我以为IO::Socket会导入Socket?我问是因为我正在尝试使用函数“getaddrinfo()”,它一直对我大喊“未定义的子例程&main::getaddrinfo在./tcp_server.pl第13行调用。”在Socketperldoc中。我通过手动指定主机IP让它工作...但我希望它自动检索它正在

linux - TCP 消息框架 + recv() [linux] : Good conventions?

我正在尝试在Linux上创建一个p2p应用程序,我希望它尽可能高效地运行。我遇到的问题是管理数据包。正如我们所知,recv()缓冲区中随时可能有多个数据包,因此需要某种消息框架系统来确保多个数据包不会被视为一个大数据包。所以目前我的数据包结构是:(u16intPacketLength):(PacketData)这需要调用两次recv();一种获取数据包大小,一种获取数据包。这有两个主要问题:1.Amaliciouspeercouldsendapacketwithasizeheaderofsomethinglarge,butnotsendanymoredata.Theapplicatio

php - 使 stream_socket_server 在第一次收到数据包后保持功能

我试图通过PHP的stream_socket_server()使tcp套接字服务器创建和维护持久的双向通信。Shortversionofquestion:howtohavetcpservercreatedwithstream_socket_server()stayingalive-notfailingtoreceivedataafterfirstsuccessfuldatareceptionwhichisinmycaseonesinglecharactertypedinterminalaftertelnetcommand?长版-我期望实现的目标只是为了说明,请查看使用smtp服务器远程