`
myoldman
  • 浏览: 84879 次
  • 性别: Icon_minigender_1
  • 来自: 福建福州
最近访客 更多访客>>
社区版块
存档分类
最新评论

close socket前一定要小心啊

 
阅读更多
这几天调试一个linux底下的服务器下了如下代码。
close(simSocket);
close(simRtcpSocket);

发现运行过程中随机出现,其他socket链接莫名其妙被关闭,导致重发消息。
后来才发现是close之后没有吧simSocket设置为0,并且close之前没有检查simSocket是否为0导致,关闭了其他socket句柄。

后来修改成如下代码后解决
	if(simSocket > 0) {
		close(simSocket);
		close(simRtcpSocket);
		simSocket = 0;
		simRtcpSocket = 0;
	}


写代码一定要严谨啊,不严谨一个小疏忽要浪费很多时间。
分享到:
评论

相关推荐

    close socket

    close socket

    HPSocket.Net-develop_hpsocket.net_HPSocket_.net_socket_tcp_

    3. 发送数据:`socket.Send(Encoding.ASCII.GetBytes("要发送的数据"));` 4. 接收数据:`byte[] buffer = new byte[1024]; int received = socket.Receive(buffer); string data = Encoding.ASCII.GetString(buffer,...

    socket

    closesocket(serverSocket); WSACleanup(); return FALSE; } ``` #### 3. **绑定Socket** - 服务器需要绑定到一个特定的IP地址和端口号,以便接收客户端的连接请求。 ```cpp sockaddr_in localaddr; ...

    socket的详细文档

    最后,当不再需要某个Socket时,可以通过调用`closesocket()`函数来关闭它。这将释放该Socket占用的所有资源,如果Socket涉及到一个打开的TCP连接,该连接也会被关闭。 ```c #include <sys/socket.h> int ret = ...

    9772.zip_mql_mql4 socket_socket

    4. **关闭连接**:完成通信后,记得使用`Close()`函数关闭socket连接以释放资源: ```cpp Close(handle); ``` 在提供的压缩包文件中,有两个头文件"mql4\Include\WinSock.mqh"和"mql4\Include\socket.mqh"可能...

    Socket模拟服务器_Socket模拟服务器_

    要创建一个Socket模拟服务器,首先我们需要创建一个ServerSocket实例,并指定一个端口号。例如: ```java ServerSocket serverSocket = new ServerSocket(8888); ``` 这里的8888是服务器监听的端口号,必须确保该...

    Android开发,Socket Client端和Socket Server端数据发送和接收

    socket.close(); serverSocket.close(); ``` - Client端示例: ```java Socket socket = new Socket("localhost", 12345); PrintWriter writer = new PrintWriter(socket.getOutputStream(), true); writer....

    c# socket设置代理

    7. **关闭连接**:完成通信后,记得调用`Socket.Close()`或`Socket.Shutdown()`方法释放资源。 ### 示例代码 以下是一个简单的C#代码示例,展示了如何设置HTTP代理连接到远程服务器: ```csharp using System; ...

    c socket pyton socket

    根据提供的文件信息,我们可以归纳出以下几个关键的知识点: ### 1. Socket编程基础 #### 定义 Socket(套接字)是网络编程中的一...无论是对于初学者还是有一定经验的开发者来说,掌握Socket编程都是非常有帮助的。

    ftp客户端ftpclient纯C语言winsock实现socket编程

    case 421:closesocket(ts);sys=0;return 421; case 530:sys=1;return -1; case 500: case 501: case 504: case 226:return -1; case 200:break; default:return -1; } ds=createDataSocket(); ...

    判断Socket是否断开的小代码

    - 当检测到Socket连接断开时,调用`CloseSocket`方法关闭Socket。 - 读取并处理接收到的数据。 #### 代码详解 ```csharp private void OnReceive(object ob) { var key = ClientSocket.LocalEndPoint as ...

    java socket 视频流转发socket

    Java Socket是Java编程语言中用于网络通信的核心API,它提供了低级别的、面向连接的、基于TCP/IP协议的网络通信能力。在"Java Socket 视频流转发Socket"这个主题中,我们将深入探讨如何使用Java Socket来处理视频流...

    socketTool socket 调试 助手

    - 关闭连接:完成通信后,调用close()函数关闭Socket。 5. **调试技巧**: - 使用SocketTool的服务器模式检查客户端是否正确发送数据,以及服务器是否正确接收。 - 切换到客户端模式,验证服务器是否正确响应,...

    spring集成socket服务

    serverSocket.close(); } } catch (IOException e) { log.error("Error while stopping SocketServer", e); } } // ... 其他SmartLifecycle接口方法实现 } ``` 3. **Socket服务处理**:`SocketService`类是...

    c++Socket通信框架

    当通信完成后,需要调用`closesocket`函数关闭Socket,释放资源。在程序退出前,记得调用`WSACleanup`来清理Winsock库。 8. **多线程与并发** 在Windows环境下,为了实现高并发,开发者可能需要利用多线程或多...

    SocketTool

    4. 关闭连接:完成通信后,双方都需调用`close()`方法关闭Socket,释放资源。 SocketTool作为一款测试工具,其功能可能包括: 1. 客户端模拟:允许用户输入目标IP地址和端口号,模拟TCP或UDP连接,发送自定义的...

    socket客户端_socket_

    标题“socket客户端_socket_”表明我们将探讨的是如何创建和使用Socket客户端,而描述中的“之前已经上传服务端demo”提示我们已经有了Socket服务端的基础。 在Socket编程中,客户端是发起连接请求的一方,它需要...

    c# socket 传输文件

    使用`Socket.Shutdown(SocketShutdown.Both)`停止发送和接收数据,然后调用`Socket.Close()`关闭Socket。 8. **性能优化** - 考虑使用异步操作,如`Socket.BeginSend()`和`Socket.BeginReceive()`,提高并发性能。...

    Linux下使用C++进行Socket编程

    数据传输结束后,双方通过close函数关闭Socket。 使用C++封装Socket API,可以简化网络编程过程。例如,可以封装Socket的创建、绑定、监听、接受连接、数据传输和关闭等操作,使其更易于理解和使用。封装后的C++类...

    socket_test_socket编程_

    8. **关闭Socket**:完成通信后,使用`close()`函数关闭Socket,释放系统资源。 在"socket_test"这个示例中,可能会包含客户端(sender)和服务器(receiver)两个部分。客户端创建Socket,填充数据并使用`sendto()...

Global site tag (gtag.js) - Google Analytics