套接字链接断开一直返回空数组

相关搜索结果:
  • 技术问答
  • 菜鸟入门教程
  • 在线工具
  • 视频教程
  • 编程实例
  • 代码片段
JAVA:处理套接字断开
两台计算机通过插座连接连接.如果服务器/客户端关闭连接 从它们的末端(即关闭InputStream,OutputStream和Socket),我该如何告知 关于断开连接的另一端?我知道的一种方法 - 尝试从InputStream中阅读, 如果连接关闭,哪个会引发IOException,但是还有其他方法可以检测到这一点吗? 另一个问题,我在互联网上查看了问题,看到inputStream.available() 不能解决这个问题.为什么是? 附加信息:我要另一种方式,因为如果我必须尝试从该项目中阅读,我的项目将很难处理 InputStrem检测断开连接. 解决方案 尝试从输入流读取,这会引发ioexception 这是不正确的.如果同伴关闭插座: read()返回-1 readLine()返回null readXXX()投掷EOFException,对于任何其他X. as InputStream只有read()方法,它仅返回-1:它不会在eos.
问答分类:其他开发 浏览量:0 发布日期:2023-09-30
如何判断一个套接字被断开的情况
在客户端,我需要知道何时/何时断开套接字连接.但是,即使在服务器端已断开连接之后,连接的属性始终返回真实,并且我尝试通过它发送数据.谁能帮我弄清楚这里发生了什么.我需要知道何时断开插座. Socket serverSocket = null; TcpListener listener = new TcpListener(1530); listener.Start(); listener.BeginAcceptSocket(new AsyncCallback(delegate(IAsyncResult result) { Debug.WriteLine("ACCEPTING SOCKET CONNECTION"); TcpListener currentListener = (TcpListener)result.AsyncState;
问答分类:其他开发 浏览量:6 发布日期:2023-09-06
C++中的插座编程
任何人都可以在C ++中使用套接字提供有关客户端和服务器连接的一些示例示例. 我现在已经完成了一些教程,我想实现它. 如何开始? 解决方案 您可以在这里找到一个有效的客户端程序程序: beej's网络编程指南 其他解决方案 C ++标准中没有插座API. POSIX C API非常便携(GNU LIBC文档提供了UDP和TCP客户端和服务器的示例,我通常会在我刮擦另一台服务器时可以使用这些示例),或者您可以使用boost.asio库来获得更多的C ++体验.... 其他解决方案 我在C/C ++中编写一个简单的客户端/服务器示例,而没有任何额外的功能.您可以构建自己的用例,参考此示例.原点代码附加在此处,也附有 github "> github . 客户端 #include #include #include #include #include
问答分类:其他开发 浏览量:24 发布日期:2023-09-06
如何在C#中检查一个(TCP)套接字是否(断开)连接?
我应该如何检查(TCP)插座以找出是否连接? 我已经阅读了 msdn ,但它说它仅根据上一个I/O显示状态.这对我没有用,因为我想在试图从套接字中阅读之前执行此操作.备注部分还指出: 如果您需要确定当前 连接状态,做一个 非块,零字节发送呼叫.如果 呼叫成功返回或 抛出豁免错误代码 (10035),然后插座仍然 连接的;否则,插座不 连接更长. 同一页面上的示例显示了如何做. -socket-connected-property-properly#post1039238" rel =" noreferrer">伊恩·格里菲斯(Ian Griffiths)的帖子说我应该从插座上 read ,而不是 send send 通过它. ...您打电话给Shutdown()后, 致电Receive()直到返回0 (假设远程端点不是 实际上要给你任何东西, 那将在遥控器一旦发生 端点已收到您的所有 数据).除非你这样做,你有 不保证远程端点 实际上已经收到了所有数据 您发送了,
问答分类:其他开发 浏览量:4 发布日期:2023-09-06
异步套接字和缓冲区大小
一直在使用带有 AsyncCallback 的异步套接字和 System.Net.Sockets 根据优秀的 MSDN 示例. 一切都很好,除了我想收到更多 总字节数超过我的缓冲区可以容纳的. 我在套接字上打开一个 8k 缓冲区的连接.如果服务器 向我发送 5k 并关闭连接它工作正常.如果服务器发给我 10k,我的 BeginReceive 回调(循环)给了我 8k 的数据, 之后 EndReceive 返回 0,所以我关闭了我的套接字. 但是,如果我将缓冲区设置为 32k,我可以获得所有数据. 它应该这样工作吗? 解决方案 马修,我不太确定你是哪个“优秀的 MSDN 示例" 下列的.通常 TCP/IP 服务器(我假设您使用 TCP/IP)不会模仿 断开连接 - 客户这样做.在服务器端不要终止客户端 连接直到客户端断开连接 - 服务器端的 BeginReceive() 返回0,不会丢失数据. 迈克尔 “马修·盖尔"
问答分类:其他开发语言 浏览量:82 发布日期:2022-07-19
不能启动phpMyAdmin。一直收到#2002套接字错误
我一直在尝试将MySQL和PhpMyAdmin设置为过去12个小时,而没有任何成功.是的,在Google-ing的数小时后,我知道这是一个常见的问题,我在Stackoverflow上阅读了类似的查询,但仍然无法使用该解决方案.... 我已经尝试了一切 - 从更改 $cfg['Servers'][$i]['port'] 在config.inc.php文件中,到3306,127.0.0.1 .... 在config.inc.php文件中键入套接字路径 - tmp/mysql.php和/var/mysql/mysql.sock. 我尝试更改my.cnf文件和php.ini中的套接字路径....但是我一直遇到相同的错误: #2002 - No such file or directory The server is not responding (or the local server's socket is not correctly configured).
问答分类:其他开发 浏览量:4 发布日期:2023-09-06
为什么我的客户服务器套接字连接一直断开?
我使用套接字在c#.net中有一个客户端服务器应用程序. 我经常收到日志消息(例如每小时4个)说此消息, An existing connection was forcibly closed by the remote host 在这种情况下,此错误在"服务器"侧发生. 我决定使用Wireshark分析发生的事情,我明白了.没有延误,这一切都在几秒钟内发生. Server > Client [PSH, ACK] Seq=55653 Ack=4472 Win=63940 Len=148 Client > Server [ACK] Seq=4472 Ack=55801 Win=4038 Len=0 Server > Client [PSH, ACK] Seq=55801 Ack=4472 Win=63940 Len=148 Client > Server [ACK] Seq=4472 Ack=55949 Win=4001 Len=0
问答分类:其他开发 浏览量:2 发布日期:2023-10-15
如何检测一个断开连接的C#套接字?
我一直在C#中的插座客户端程序工作,并且想知道如何检测插座的另一端何时脱离了自己的"毫无疑问",就像网络电缆被插入的网络电缆或硬重置一样. 我在下面具有这些功能以访问插座,并且根据SO问题在这里和此 msdn文章,检查断开连接套接字的最佳方法是发送1个字节消息,长度为0.如果抛出异常并且WSAEWOULDBLOCK不是错误代码,则插座断开.我已经尝试过此操作,但是在硬重置服务器连接后,客户端将调用Send(new byte[1], 0, 0, SocketFlags.None)并成功返回,然后立即返回Receive()命令,返回WSAEWOULDBLOCK错误. 什么给了?? 这是我下面的代码. _socket设置为非阻滞模式: private int nonBlockRecv(byte[] recvBytes, int offset, int size, SocketFlags sf) { int bytesRecv = 0; while (t
问答分类:其他开发 浏览量:10 发布日期:2023-09-06
C++套接字winsock连接丢失
我在我的 VC++ 2008 应用程序中使用了 winsock2 API. 应用程序运行时socket一直处于读/写状态,我拔网线强行出现网络问题. 为了检查连接是否断开,我只向套接字发送 0 个字节,但我仍然返回 0 而不是 SOCKET_ERROR. 有谁知道如何检查连接是否断开? 解决方案 这是软件开发人员对网络管理员最误解的概念之一,通常出现在“网络"和“链接"的混淆. 套接字是两个远程 IP 地址之间的关系.中间可能有整个互联网:没有“从 A 到 B 的电缆".即使 A 中的电缆已插入,A 也可能无法从 A 到达 B. 想想 A ----- R ----- R ---- R ---- B \----R-----R---/ 并且由于坐在 A 上的人无法控制其间所有链接的整个状态,因此没有任何 A 本地事件可以单独证明 A 到 B 的可达性. 拔网线只是让网卡离线,但对IP没有任何影响(即无连接). 当然,您可以使用适当的 OS API
问答分类:其他开发语言 浏览量:110 发布日期:2022-07-19
通过异步套接字连接和断开发送
大家好, 有人可以帮我吗?我正在开发一个客户端 sockect 将事务从数据库发送到服务器套接字.我想要的方式是连接、发送、接收、断开连接、连接、发送、接收和断开连接......就像这样,直到所有交易都被上传.我的问题是当我发送时,我正在关闭套接字,当我尝试连接并再次发送时,出现以下错误“一旦套接字断开连接,您只能异步重新连接,并且只能连接到不同的端点.BeginConnect 必须在操作完成之前不会退出的线程上调用." 解决方案 您使用的是 UDP,为什么使用 BeginConnect 和所有这些生意? 大家好, 有人可以帮我吗?我正在开发一个客户端 sockect 将事务从数据库发送到服务器套接字.我想要的方式是连接、发送、接收、断开连接、连接、发送、接收和断开连接......就像这样,直到所有交易都被上传.我的问题是当我发送时,我正在关闭套接字,当我尝试连接并再次发送时,出现以下错误“一旦套接字断开连接,您只能异步重新连接,并且只能连接到不同的端点.Begin
问答分类:其他开发语言 浏览量:102 发布日期:2022-07-17
配置保持活力以使连接一直保持活力
我有一个TCP客户端服务器应用程序,该应用程序在配置时间后打开一个用于一次使用和断开连接的连接.我如何配置它一直保持连接一直活着,重新连接封闭的连接并确保多个客户端连接与服务器打开. 客户端配置:
问答分类:其他开发 浏览量:6 发布日期:2023-09-13
如何检测TCP套接字的断开(用C Berkeley套接字)?
我正在使用循环从C伯克利插座读出消息,但是我无法检测到插座何时断开连接,因此我会接受新连接.请帮助 while(true) { bzero(buffer,256); n = read(newsockfd,buffer,255); printf("%s\n",buffer); } 解决方案 您可以检测到插座连接的唯一方法是写入它. 在read()/recv()上遇到错误将表明连接已断开,但在阅读时不会遇到错误,并不意味着连接已启动. 您可能有兴趣阅读以下内容: /1154.html 此外,使用 tcp保持活跃和断开的连接(即使应用程序没有发送数据,也要定期发送某些内容). (编辑:@damon指出的删除的错误句子,谢谢.) 其他解决方案 您的问题是您完全忽略了read()返回的结果. read()之后的代码至少应该像这样: if (n == 0) //
问答分类:其他开发 浏览量:0 发布日期:2023-10-14
可能存在错误。net套接字实现?内部可复制代码
在这个链接我有两个c#项目,一个是客户端,另一个是 服务器.只需将客户端的ip地址指向服务器 http://www.slip-angle.com/hosted/bug/ 服务器只做 c# 文档中的示例 了解如何设置异步服务器.它只接受连接, 连续将数据读入缓冲区,不做任何事情. 客户端连接200个socket,每个socket不断发送一些数据, 偶尔会断开一个套接字并重新连接一个新的. 注意事项: 1. 在这种情况下,内存永远增加.不只是私人 字节,但 gen2 堆永远增加,即使在强制 gen2 垃圾回收 2. 内存分析器表明没有遗留对象引用 3.内存分析器指示“孔";在gen2堆中,可以是 由“固定对象"引起.我想也许是 中的数据接收缓冲区被无限期保留,尽管所有套接字 正在服务器上关闭. 4.如果将客户端改为不发送任何数据,内存将不会 增加.如果您将客户端更改为不断开连接并重新连接任何 sockets,内存不会增加.
问答分类:其他开发语言 浏览量:52 发布日期:2022-07-19
如何处理Java中的套接字断开连接?
嘿.我使用serversocket和套接字类用Java编写了一台服务器. 我希望能够检测和处理断开连接,然后在必要时重新连接新客户. 检测客户断开连接,关闭套接字然后接受新客户的正确过程是什么? 解决方案 大概,您是从插座上读取的,也许是在输入流上使用包装器,例如BufferedReader.在这种情况下,您可以检测到相应的读取操作返回-1(用于RAW READ()调用)或null(用于readline()呼叫)时的流程结束. 某些操作将在封闭插座上执行时会导致SocketException,您也需要适当处理. 其他解决方案 检测另一端的唯一安全方法是定期发送心跳,并基于缺乏心跳的另一个末端. 其他解决方案 是我,还是没有人注意到Javadoc在 serversocket API ,它允许我们根据serversocket的封闭状态获得布尔值? 您只需每隔几秒钟循环一次检查它的状态: if(!serverSocket.isClosed(
问答分类:其他开发 浏览量:12 发布日期:2023-09-06
如何在NodeJs中断开与tcp套接字的连接
i使用此命令: 连接nodejs中的套接字服务器 client = net.createConnection() 然后,如何正确断开服务器的连接? 我尝试了client.end(),甚至client.destroy() 但是,当我使用netstat检查连接状态时,它表明连接位于state fin_wait2中. 我如何完全关闭和破坏连接? 解决方案 net.createConnection()返回套接字对象. client.destroy()是您想做的. 来源: api/net.html#socket.destroy 其他解决方案 这是默认的TCP连接终止顺序, 通过调用client.end()节点JS将将fin数据包发送到服务器,并且服务器将使用fin cacket响应客户端以接受套接字终止. 从nodejs文档开始,socket.end的作用是, 半将插座锁定.即,它发送了一个鳍包.服务器可能仍会发送一些数据.
问答分类:其他开发 浏览量:8 发布日期:2023-09-06
套接字同时发送/接收
谁能指出你不能同时在一个套接字上发送和接收的原因? 据我了解,有 2 个流,一个推,一个拉 如果您尝试同时发送/接收,您将收到 wasealready 错误 socket抛出wasealready错误是什么原因(10035) 和接收方发回的ack窗口有关系吗? 好像要为窗口保持线路打开? 解决方案 您可以同时在同一个套接字上发送和接收(通过多个线程).但是发送和接收实际上可能不会同时发生,因为一个操作可能会阻止另一个操作开始,直到它完成.这就是Winsock的情况..NET 包装器/实现可能允许也可能不允许这样做 - 这取决于您使用的类(您需要使用反射器等工具查看实现以查看是否允许这样做). 其实可以同时发送和接收.你不能有两个线程通过同一个 TCP/IP 套接字发送或两个线程在同一个 TCP/IP 套接字接收. 我在我的远程处理框架中使用了很多.见: 我正在向客户端发送一个文件(所以我一直在调用 write). 出于某种原因,客户端想要取消文件
问答分类:其他开发语言 浏览量:226 发布日期:2022-07-17
如何在C#中检查一个套接字是否被连接/断开?
,如果其他主机在断开连接时不会向您发送网络套接字(system.net.sockets.socket)是否仍连接到网络套接字(System.net.sockets.socket)(例如,因为它不疏忽地断开连接)? ? 解决方案 AS Paul Turner 在这种情况下回答Socket.Connected无法使用.您需要每次进行轮询连接,以查看连接是否仍处于活动状态.这是我使用的代码: bool SocketConnected(Socket s) { bool part1 = s.Poll(1000, SelectMode.SelectRead); bool part2 = (s.Available == 0); if (part1 && part2) return false; else return true; } 它是这样的工作: s.Poll s.Poll s.Poll 如果 连接已关闭,
问答分类:其他开发 浏览量:2 发布日期:2023-09-05
当非阻塞套接字上的连接断开时,`sock.recv()` 返回空字符串
i在Python中具有一个名为sock的非阻滞插座.根据我的理解 这是我测试的脚本-no-data-is-r">在这里): import sys import socket import fcntl, os import errno from time import sleep s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect(('127.0.0.1',9999)) fcntl.fcntl(s, fcntl.F_SETFL, os.O_NONBLOCK) while True: try: msg = s.recv(4096) print("got data '{msg}'".format(msg=msg)) except socket.error, e: err = e.args[0] if err == errno.E
问答分类:其他开发 浏览量:6 发布日期:2023-09-06
当套接字与服务器断开连接时,如何从房间中取消套接字?
如果插座与服务器断开连接,则该套接字的所有订阅将默认从聊天室中删除(乘式帆),否则我们必须手动(通过代码)手动将其删除 解决方案 Socket.prototype.onclose = function(reason){ if (!this.connected) return this; debug('closing socket - reason %s', reason); this.emit('disconnecting', reason); this.leaveAll(); // leave from all rooms this.nsp.remove(this); this.client.remove(this); this.connected = false; this.disconnected = true; delete this.nsp.connected[this.id]; this.emit('disconnect', reason); // disconnec
问答分类:其他开发 浏览量:2 发布日期:2023-09-05