草庐IT

m_Socket

全部标签

c++ - window ,C++ : two connections on one server socket?

我不知道这是一个普遍的网络问题还是仅仅是一个编程问题,所以我决定把它贴在这里。尝试制作一个聊天程序,我遇到了以下情况:-我启动服务器程序;服务器在端口22001上创建套接字;服务器等待连接(接受()挂起);-我启动客户端程序;客户端连接无误;客户端发送无误;-服务器接收消息;然后:-我在同一端口上启动另一个客户端(客户端程序的另一个实例,而不停止或断开第一个客户端的连接);-尽管服务器不再处于“accept()pending”状态,但第二个客户端连接没有错误(?!);-第二个客户端发送消息时没有显示任何错误(?!);-服务器不接收来自第二个客户端的消息(?!);实验的最后一步:-我在服

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会“解锁”它并使其工作?最终我做错了什么导

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

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

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

c - TCP 连接 : Recreating a socket that has been closed

我正在编写客户端FTP程序,到目前为止,在成功连接后,服务器将以扩展被动模式运行。使用从EPSV命令返回的端口号,我可以像这样创建客户端套接字:voidcreate_data_channel(){if((data_sock=socket(AF_INET,SOCK_STREAM,0))==-1){perror("Cannotcreateclientsocketfordataconnection:(");exit(1);}data_server_addr.sin_family=AF_INET;data_server_addr.sin_port=htons(port);data_server

python - 模块 'socket' 没有属性 'getsockname'

这是一个使用TCP套接字的简单文件服务器文件,当我运行它时,出现以下错误。谁能告诉我这个问题的解决方案importsocket#Importsocketmodules=socket.socket()#Createasocketobjecthost=socket.gethostname()#Getlocalmachinenameport=socket.getsockname()#Reserveaportforyourservice.block_size=1024#fileisdividedinto1kbsizes.bind((host,port))#Bindtotheport#f=ope

c# - Socket.EndReceive 工作流程

关于microsoftsite您可以找到ReadCallback(IAsyncResult)的代码staticvoidReadCallback(IAsyncResultar){StateObjectstate=(StateObject)ar.AsyncState;Sockethandler=state.workSocket;intread=handler.EndReceive(ar);if(read>0){state.sb.Append(Encoding.ASCII.GetString(state.buffer,0,read));handler.BeginReceive(state.b