Socket
youxiazzz12
这个作者很懒,什么都没留下…
展开
-
判断SOCKET连接状态
1. 用read函数来判断读到长度0不能断定是已经断开.除非是-1,才代表输入流已经被关闭,说名socket已经close,而且关键在于你怎么读,实际上应该是一个单独的线程一直在读,因为你无法预先知道能不能一次将发过来的包读完,也无法知道一次是不是读完整了包,所以线称一直循环在读并且一直在解包.这样即能知道什么时候server断,也完成了消息的解读,我的方案是这样的,在大数据量高速率网络上运行转载 2014-04-29 17:25:20 · 1833 阅读 · 0 评论 -
socket 10038错误
最近编写服务器程序,游戏服经常与登录服莫名其妙的断开,错误码10038(无效的套接字),而这个套接字是在程序启动的时候创建并连接的,并没有关闭掉。网上搜索看了这篇文章,顿时明白。http://hi.baidu.com/gensoft/item/716dc9cd59dd817aced4f81b原因是windows套接字不能被关闭多次。而游戏服在客户端连接的套接字上关闭多次,导致与登录服务器连转载 2014-04-30 13:59:57 · 24188 阅读 · 0 评论 -
C++基础--完善Socket C/S ,实现客户端,服务器端断开重连
// WindowsSocketServer.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include #include #include #include #pragma comment(lib,"Ws2_32.lib")using namespace std;#define PORT 8080转载 2014-04-30 14:02:34 · 10728 阅读 · 0 评论 -
c++编程IOCP中的socket错误和资源释放处理方法
前言: 错误处理和socket释放, 是IOCP编程中的一大难点. 本文试图就IOCP设计中经常遇到的这个难题展开论述并寻找其解决方案, 事实上, 文中所述的解决方式不仅仅适用于IOCP, 它同样适用于EPOLL等多种服务器编程的网络模型中, 前提是: 领会这种处理方式的实质.正文:在使用IOCP开发时, 大家经常遇到的一个难题是与socket相关的缓冲区释放不当带来的错误, 这种错误转载 2014-04-30 09:58:43 · 2295 阅读 · 0 评论 -
回调函数多次调用就出错
解决了,原来是代理需要定义成static的C# code?123456private static MyDllCall callbackfun; private void Btn_SetCallBack_Click(object sender, EventArgs e) {转载 2014-04-22 17:16:54 · 5975 阅读 · 0 评论 -
Socket与拔掉网线
Socket与拔掉网线 当客户端与服务端通过Tcp Socket进行通信时,如果客户端应用正常退出或异常退出,服务端都会在对应的连接上获取感知(如返回0、或抛出异常)。但是,如果客户端的网线被拔掉,那么,默认情况下,服务端需要在2个小时后才会感知客户端掉线。对于很多服务端应用程序来说,这么长的反应时间是不能忍受的。 我们通常在应用层使用“心跳机制”来解决类似的问题,这是可行转载 2014-04-21 17:00:23 · 1791 阅读 · 0 评论 -
TCP连接探测中的Keepalive 和心跳包
采用TCP连接的C/S模式软件,连接的双方在连接空闲状态时,如果任意一方意外崩溃、当机、网线断开或路由器故障,另一方无法得知TCP连接已经失效,除非继续在此连接上发送数据导致错误返回。很多时候,这不是我们需要的。我们希望服务器端和客户端都能及时有效地检测到连接失效,然后优雅地完成一些清理工作并把错误报告给用户。如何及时有效地检测到一方的非正常断开,一直有两种技术可以运用。一种是由TCP协议层实转载 2014-04-22 17:18:31 · 530 阅读 · 0 评论 -
在C#中利用Keep-Alive处理Socket网络异常断开的方法
最近我负责一个IM项目的开发,服务端和客户端采用TCP协议连接。服务端采用C#开发,客户端采用Delphi开发。在服务端开发中我碰到了各种各样的网络异常断开现象。在处理这些异常的时候有了一些心得,现在写出来和大家分享一下。那网络异常断开原因主要有那些呢?归纳起来主要有以下两种:1、客户端程序异常。 对于这种情况,我们很好处理,因为客户端程序异常退出会在服务端引发ConnectionR转载 2014-04-22 16:06:54 · 704 阅读 · 0 评论 -
setsockopt 设置socket 详细用法
1.closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket:BOOL bReuseaddr=TRUE;setsockopt(s,SOL_SOCKET ,SO_REUSEADDR,(const char*)&bReuseaddr,sizeof(BOOL));2. 如果要已经处于连接状态的soket在调用closesocket后强制关闭,不经转载 2014-05-12 16:53:16 · 37628 阅读 · 0 评论