草庐IT

m_socket

全部标签

sockets - 如何将有效的 TCP 消息发送到 .NET 框架上的 Telegram 服务器?

所以我想使用.NET框架创建一个Telegram客户端。我读了thispage在Telegram网站上,这是授权过程和客户端与服务器之间交换的消息的示例。那么,我的程序可以生成所描述的40字节消息,该消息必须作为请求发送到服务器,并且服务器应该返回84字节消息。但是我在TCP的Telegram定制方面遇到了困难。我的程序生成40字节的请求并将其提供给配置为:SocketType.Stream和ProtocolType.Tcp的.NETTCP套接字。所以我通过套接字发送这个字节数组,而我从服务器接收到的只是一个00字节数组。我怀疑.NET框架上的TCP实现向我的字节数组添加了一些东西(序

python - python如何区分字符串和二进制消息——TCP Socket发送

我在来自user3132092的stackoverflow(link)中找到了这个示例,用于TCP客户端通过TCP发送“Helloworld”字符串:发送字符串importsockethost=socket.gethostname()port=12345#Thesameportasusedbytheservers=socket.socket(socket.AF_INET,socket.SOCK_STREAM)s.connect((host,port))s.sendall(b'Hello,world')问题是s.sendall()如何像接受二进制一样接受字符串作为参数?“Hellowor

sockets - 哪些协议(protocol)值与 socket() 中的哪些域和类型组合兼容?

我在玩Berkeley套接字,然后我这样做了:#include#include#includeintmain(){autores=socket(AF_INET6,SOCK_STREAM,58);if(res输出是:创建套接字时出错:不支持协议(protocol)。我选择58是因为我想尝试以ICMPIPv6套接字为例,并使用/etc/protocols的内容我得到了这个:ipv6-icmp58IPv6-ICMP#IPv6的ICMP。然后我尝试用0代替上面代码中的58,程序运行良好。所以我的问题是:如果我们有,为什么在socket()调用中需要第三个参数已经在第二个参数中将SOCK_STR

Python 双向 TCP 套接字卡在 socket.recv 上

引用这个例子(和docs):https://pymotw.com/2/socket/tcp.html我正在尝试通过使用TCP的客户端和服务器之间的阻塞套接字实现双向通信。我可以从client->server或server->client获得单向通信,但在尝试接收时套接字仍然被阻塞或“挂起”服务器和客户端上的消息。我正在使用一个简单的算法(recvall),它使用recv,将数据包合并为完整的消息。我知道在发送或读取所有数据之前,套接字会一直被设计阻塞(对吗?),但这不是sendall和recvall负责的吗?为什么在客户端或服务器上禁用recv会“解锁”它并使其工作?最终我做错了什么导

sockets - 当我请求的数据多于立即可用的数据时, `recv` 会阻塞 TCP 套接字吗?

TCP可以任意合并和拆分数据包。因此,假设我这样做,例如,这样的调用:`recv(sock,buf,15,0)`但此刻只有5数据字节立即可用–威尔recv()阻止直到15字节的数据可用,或者我只会得到5字节?我问是因为我想知道我是否可以阅读,例如uint32_t就是这样(假设i是uint32_t类型的变量):if(recv(sock,&i,sizeof(uint32_t),0)或者我更愿意做这样的事情:unsignedcharbuff[sizeof(uint32_t)];ssize_tread_already=0;while(read_already!=sizeof(uint32_t)

node.js - 在 Socket.io 中使用 HTTP 进行 TCP 通信时出现 TypeError : Cannot read property 'emit' of undefined

尝试与HTTP服务器通信TCP服务器我的TCP端口是4040,HTTP端口是3000我正在努力将TCP服务器上接收到的数据传递给HTTP服务器在TCP端口上接收到的数据显示在控制台窗口上,我试图通过将数据存储在全局变量中来将此数据传递给HTTP,以便我可以在网页上显示它。谢谢:)服务器代码:entercodeherevarhttp=require('http').createServer(httpHandler);varnet=require('net');varapp=require('express')();varhttp=require('http').Server(app);v

sockets - 关于 TCP 连接和 TCP 保持事件的查询?

我有以下关于连接和TCP保持事件的查询:对于TCP连接,TCP保持事件状态是强制性的吗?保持事件的持续时间是固定的还是可配置的?假设保活间隔是每15秒一次,那么保活是始终每15秒发送一次还是仅在15秒内未发送应用程序数据时才发送?服务器(通过TCP与客户端连接)如何确定与客户端的连接是否完好?可以使用TCPkeepalive来完成吗?在这种情况下,是服务器需要发送活着?此外,如果未启用keepalive,那么除了发送应用程序级探测之外,还有什么方法可以检查连接状态吗? 最佳答案 IsTCPkeepalivemandatoryfora

Perl IO::Socket::INET + IO::Async::Stream 断开连接时重新连接到 TCP 服务器

对于我来说,我似乎无法弄清楚如何在断开连接后重新连接标准TCP套接字连接,尤其是在IO::Async::Loop的上下文中一些基础知识:#!/usr/bin/perlusestrict;usewarnings;useSocket;useIO::Async::Loop;useIO::Async::Stream;useIO::Socket;useTime::HiResqw(usleep);#standardeventloopmy$loop=IO::Async::Loop->new;#notificationservicesocketconnection;weonlywriteoutgoin

sockets - Windows 防火墙入站规则与 netstat 监听端口不匹配

我不是防火墙专家,所以需要一些帮助来理解我的Windows防火墙规则和netstat显示的内容之间的区别。由于规定,我公司的某些计算机仅允许几个端口上的入站流量,默认情况下所有其他端口都被阻止。例如,一台计算机可能允许TCP20、21、23、80、443、445和3389。但是,当我执行netstat命令时,我看到许多不应允许的“监听”端口:ProtoLocalForeignStateTCP0.0.0.0:59850.0.0.0:0LISTENINGTCP0.0.0.0:90010.0.0.0:0LISTENINGTCP0.0.0.0:90020.0.0.0:0LISTENINGTCP

c++ - 如何接受 boost::asio::ssl::stream<boost::asio::ip::tcp::socket> 作为 boost::asio::ip::tcp::socket 类型的参数

我试图调整Boost文档中的SSL服务器示例here但我想制作一个应用程序,您可以在其中使用普通boost::asio::ip::tcp::socket或SSL套接字,但我还没有找到将两者传递给voiddo_something_with_socket(boost::asio::ip::tcp::socket&sock)之类的函数的好方法因为SSL套接字不是从原始TCP套接字继承的。我唯一能想到的就是到处使用模板,但我想知道是否有更好的方法来做到这一点?谢谢。编辑:我查看了boost::asio::ssl::stream的成员我找到了next_layer()是boost::asio::i