草庐IT

Socket_recv

全部标签

python - Socket.sendall() 不发送给所有连接的客户端

我正在努力使用客户端/服务器设置的.sendall()方法。多个客户端可以单独连接并向服务器发送消息并获得回显响应。但是,我希望发送的消息在类似聊天的环境中显示给所有连接的客户端。这是在服务器应用程序上运行的代码。defclientHandler(conn,addr):name=addr[0]print(addr,"connectedtotheserver")whileTrue:data=conn.recv(1024)iftostr(data)[0:5]=='/name':print('settingname')setname(data)ifnotdata:breakconn.send

java - socket.connect(endpoint) 和 new Socket(ip,port) 有什么区别

当创建到serversocket的客户端连接时,我们可以通过两种方式创建客户端套接字我的问题是以下两种方法之间的区别是什么,InetAddressaddr=InetAddress.getByName("localhost");SocketAddresssockaddr=newInetSocketAddress(addr,1111);SocketclientSocket=newSocket();clientSocket.connect(sockaddr);还有另一种方法SocketclientSocket=newSocket("localhost",1111);有什么优点和缺点谢谢。

java - Socket OutputStream::write 方法混合了 TCP 数据包?

我有一些关于javasocket的问题。我创建了一个简单的代理服务器来监听http请求,将此请求传输到源,然后返回响应,无需断开连接。有时客户端会收到无效数据。我查看了tcp转储日志,发现tcp数据包是混合的这是非常简单的代码示例Socketsocket=newSocket("127.0.0.1",3000);OutputStreamout=socket.getOutputStream();InputStreamin=socket.getInputStream();while(true){finalRequestrequest=Request.read(in);if(request==

c - Linux, C : IPv6 socket: write blocks

我有服务器和客户端应用程序,在Ubuntu1410默认内核上以IPv6运行。服务:socket监听本地TCP端口并使用select()处理新的连接和数据;客户端:socket通过TCP连接服务器IPv6地址和端口。可以成功建立连接。但是,当write()数据时,缓冲区大小为128K,它会阻塞在write()中。因为我需要写入很多数据,所以我有一个for循环来调用write()。有时,write()会成功一两次,但随后又会阻塞。我的应用支持IPv4和Ipv6。write()适用于IPv4。而且,如果我在::1上测试(服务器和客户端在同一台机器上运行),IPv6也可以工作。r=write(

java - 为什么使用 Socket.setSoTimeout() 不起作用?

此代码fragment来self在Androidjava中制作的TCP辅助函数:socket.setSoTimeout(2000);InputStreaminStream=socket.getInputStream();PrintWriterout=newPrintWriter(newBufferedWriter(newOutputStreamWriter(socket.getOutputStream())),true);out.println(message);BufferedReaderinput=newBufferedReader(newInputStreamReader(inS

c++ - 在 async_read 处理程序在服务器中返回错误后调用 boost::asio::tcp::socket 方法

对于日志输出,我正在调用tcp::socket::remote_endpoint()来自shared_ptrSessionSession时的对象创建和销毁的时间。如果async_read被调用并且客户端在服务器发送回复之前发送了一个FIN,然后在服务器发送回复之后发送了一个RST数据包(write不返回任何错误),async_read函数返回错误代码system::54(not_connected-带有“连接由对等方重置”的消息),然后当我再次调用remote_endpoint方法时(在Session对象析构函数中)它抛出异常:libc++abi.dylib:terminatingwi

C# TCP Socket编程——向所有套接字发送数据

我正在从事服务器/多客户端编程。我会停止追逐一切都运行良好但是foreach(SocketsctinsocketArray){sct.send(data);}不工作。它假设将数据发送到所有连接的套接字,但只有发出请求的套接字才能获得响应。我在想是不是和tcp打包有关?或者我不知道为什么它不起作用?如果有人可以提供帮助,我将非常感激。谢谢 最佳答案 假设data是byte[]并且您的意思是sct.Send,那么:它应该可以正常工作,并发送相同的负载-按顺序-到socketArray中的所有套接字。这里没有什么特别细微的差别-每个套接字

c - recv 阻塞直到发送第二个数据包

我正在使用recv方法在WindowsCE6.1系统上通过TCP接收数据。出于某种原因,第一次调用recv有时会阻塞,直到发送下一个数据包。我现在突然同时收到两个数据包。tcpClientSocketId=accept(tcpServerSocketId,(structsockaddr*)&client,(int*)&sockaddrLength);if(tcpClientSocketId我验证了数据实际上是使用Wireshark发送的。有人知道为什么recv方法会阻塞吗?编辑:只是为了澄清:我不依赖于逐个数据包接收的数据——这些数据被组合成一个字符串,然后进行处理。除了等待recv调

sockets - Linux内核TCP Socket修改

有什么简单的方法可以修改tcpsocket参数吗?例如:Server_program正在使用eth0和10.0.0.1,它无法重新启动,我需要在eth1和192.168.0.1上重新创建套接字。我知道还有其他一些不重要的问题,但我现在正在寻找的是在内核中“即时”修改套接字的可能性。感谢您的任何建议。 最佳答案 打开新套接字,执行任何需要的步骤使其连接并进入相同状态,然后使用dup2()。将旧文件描述符转换为新文件描述符的克隆。 关于sockets-Linux内核TCPSocket修改,我

java - 无论如何,谁关闭了那个 socket ?

我们有一个使用ApacheCXF2.5.x构建的系统,该系统在响应中使用带有MTOM附件的SOAP消息。客户端每隔一段时间就会遇到异常,提示套接字已关闭,CXF在读取带有这些附件之一的HTTP响应时正在读取该套接字。服务器没有显示任何有趣的事情。我们想知道:我们如何判断套接字是否关闭是因为服务器端暴力关闭它,而不是客户端调用close()的一些流氓代码? 最佳答案 您可以从WireShark开始.它将显示网络中的所有流量。从那里您可以看到哪一侧为套接字发送FIN或RST。捕获时使用过滤器,例如如果在客户端运行,则按服务器的IP地址进