异步Tcp socket遇到无法访问已释放的对象 System.Net.Sockets [问题点数:40分,结帖人frustrate2]

Bbs1
本版专家分:37
结帖率 100%
Bbs1
本版专家分:37
Bbs1
本版专家分:37
Bbs5
本版专家分:3343
Bbs5
本版专家分:3343
Bbs2
本版专家分:218
Bbs2
本版专家分:218
Bbs5
本版专家分:3343
Bbs1
本版专家分:37
Bbs2
本版专家分:218
Bbs1
本版专家分:37
Bbs2
本版专家分:218
EF 此 ObjectContext 实例已释放,不可再用于需要连接的操作。
此 ObjectContext 实例已<em>释放</em>,不可再用于需要连接的操作。 在Linq to Entity中,ObjectContext 实例已<em>释放</em>后就无法通过导航属性进行查询。导航属性的本质就是重新发送一个查找外键表的命令给数据库执行,连接数据库的<em>对象</em>实例<em>释放</em>了,自然就无法进行查询操作。为了避免这样的错误,取数据时尽量先转换成List&lt;T&gt;数据集合。 在模型中把之前的ICo...
Winform 多MDI窗体关闭时,无法访问释放对象对象名:“Icon”
<em>无法访问</em>已<em>释放</em>的<em>对象</em><em>对象</em>名:“Icon” 在WINFORM开发中,对当打开多个MDI窗体,并且在最大化状态下关闭窗体时,常常出现以下异常:System.ObjectDisposedException:<em>无法访问</em>已<em>释放</em>的<em>对象</em>。 <em>对象</em>名:“Icon”。    在 System.Drawing.Icon.get_Handle()    在 System.Drawing.Icon.get_Size(
【C#】更新界面显示并解决this.Invoke无法访问释放对象
比如我在当前线程中要实时更新界面显示时间为当前时间//声明定时器 private System.Timers.Timer timer1;//设置定时器 (在Load里设置) timer1 = new System.Timers.Timer(1000);//实例化Timer类,设置间隔时间为1000毫秒; timer1.Elapsed += new System.Timers.ElapsedEvent
单例模式-解决无法访问释放对象
public class SingleTon where T : Form ,new() { private static T instance; static SingleTon() { { if (instance == null)
无法访问释放对象X.show()
把FrmSs1.Show()改为FrmSs1.ShowDialog()
c#重新打开子窗体出现无法访问释放对象的异常
解决方法: private void mdiFormClosing(object sender, FormClosingEventArgs e) { Form mdiForm = (Form)sender; mdiForm.Hide();//隐藏被关闭的窗体 e.Cancel = true;//撤销窗体关闭操作 }
boost库之tcp实例(异步方式)
//服务端   #define TCP_RECV_DATA_PACKAGE_MAX_LENGTH 2048 #define TCP_SEND_DATA_PACKAGE_MAX_LENGTH 2048 #include &amp;lt;iostream&amp;gt; #include &amp;lt;boost/function.hpp&amp;gt; #include &amp;lt;boost/bind.hpp&amp;gt...
Unity3d 游戏与C#服务器 异步Socket 交互 (一)
Unity3d中提供了Socket供开发者使用,语法和.net中的一致。 一般来说,对于手游客户端,分为两个线程,一个是GLES渲染,另一个就是Socket线程了。 不论是服务器,还是客户端。其间的数据包的接收与发送,都是通过Socket。 比如客户端要登录,我们就新建一个Socket,Connect到帐号服务器。帐号服务器一直在等待客户端的连接,客户端连接进来之后就准备发送接收数据包了。
VB.NET多线程Socket实现简单HTTP服务
Imports System.Net Imports System.Net.Sockets Imports System.Threading Module monkeyServer Private Const HttpVersion As String = "HTTP/1.1" Private Const WebTitle As String = "Monkey Server" Priv
.net 中异步SOCKET发送数据时碰到的内存问题
做CS的开发一直都是这样的方式: server端用 C++编写,采用IOCP机制处理大量客户端连接、数据接收发送的问题 client端用 C++ 或C# 写,没什么特殊要求。 最近工作时间上比较宽裕,决定采用新的方式来处理服务端的工作: C# + SOCKET<em>异步</em>机制(.net里没有IOCP的直接支持) 目前正可行性分析阶段,第一步的工作:接收3W个SOCKET连接, 结果还是不错
.net 中socket异步长连接实例
最近在熟悉<em>socket</em>通讯,写一个简单的聊天实例,希望对以后的初学者有帮助..... 服务器端的界面    public partial class ClientSeverForm : Form     {        //private System.Compo
无法访问释放对象!!!!!
以下是form1的代码:rnusing System;rnusing System.Collections.Generic;rnusing System.ComponentModel;rnusing System.Data;rnusing System.Drawing;rnusing System.Linq;rnusing System.Text;rnusing System.Windows.Forms;rnrnnamespace _20080517S2rnrn public partial class MainForm : Formrn rn From2 fa;rn public MainForm()rn rn InitializeComponent();rn fa = new From2();rn fa.MdiParent = this;rn fa.WindowState = FormWindowState.Maximized;rn fa.button1.Click += new EventHandler(button1_Click);rn rn rn rn void button1_Click(object sender, EventArgs e)rn rn MessageBox.Show(fa.Timu);rn fa.Close();rn rn rn rn rn private void 增加题目ToolStripMenuItem_Click(object sender, EventArgs e)rn rn fa.Show();rn rn rnrnrnrn下面是form2的代码:rnusing System;rnusing System.Collections.Generic;rnusing System.ComponentModel;rnusing System.Data;rnusing System.Drawing;rnusing System.Linq;rnusing System.Text;rnusing System.Windows.Forms;rnrnnamespace _20080517S2rnrn public partial class From2: Formrn rn public From2()rn rn InitializeComponent();rn rn public string Timurn rn get return this.textBox1.Text; rn rn public string XX1rn rn get return this.textBox2.Text; rn rn public string XX2 rn get return this.textBox3.Text; rn rn public string XX3 rn get return this.textBox4.Text; rn rn public string XX4 rn get return this.textBox5.Text; rn rnrn private void button1_Click(object sender, EventArgs e)rn rn MessageBox.Show(this.Timu);rn rn rn rnrnrnrn第一次点击”增加题目“时 form2 正常SHOW出来!rnrn输入完后 点FORM2的Button1关闭rnrn然后第二次点击“增加题目”的时候就会出现 “<em>无法访问</em>已<em>释放</em>的<em>对象</em>” 的错误rnrn为什么会这样 rnrn环境:VS2008
无法访问释放对象
我在一个子窗口form1_load里面加入下面代码rn Dim aaa As New System.Windows.Forms.MenuStriprn aaa = fMain.MenuStrip1rn Me.Controls.Add(aaa)rnrn第一次打开没有错误,但是当我关闭form1后,再打开时候提示 错误: <em>无法访问</em>已<em>释放</em>的<em>对象</em>。<em>对象</em>名“MenuStrip”rn这是怎么回事呢rnrn
VC中TCP实现 异步套接字编程的原理+代码
所谓的<em>异步</em>套接字编程就是  调用了 如下函数   WSAAsyncSelect   设置了 套接字的状态为<em>异步</em>,有关函数我会在下面详细介绍。。。 <em>异步</em>套接字解决了 套接字编程过程中的堵塞问题 ...... 什么是堵塞?请看下面  你可能有过这样的体会  在  VC编写基于界面的网路程序时候  ,调用 recv recvfrom   accept  等函数的时候 整个程序的主线程进入堵
无法访问释放对象
[code=vb]Imports System.Windows.FormsrnPublic Class Form1rn Dim sform As New Form2rn Dim ssform As New Form3rnrn Private Sub TreeView1_AfterSelect(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles TreeView1.AfterSelectrn If TreeView1.SelectedNode.Text = "1" Thenrn sform.MdiParent = Mern sform.LayoutMdi(MdiLayout.Cascade)rn sform.Show()rn ElseIf TreeView1.SelectedNode.Text = "2" Thenrn ssform.MdiParent = Mern ssform.LayoutMdi(MdiLayout.Cascade)rn ssform.Show()rnrn Else : MsgBox("as")rnrn End Ifrn End Sub[/code]rn点击子窗体的关闭窗口键后再次点击节点 提示错误:<em>无法访问</em><em>释放</em>的<em>对象</em>! 求解啊
异步Socket Tcp服务器实现(C#)
原创性申明 本文作者: 小竹zz  本文地址:http://blog.csdn.net/zhujunxxxxx 转载请注明出处。 介绍 在c#中微软已经提供了TcpListener和TcpClient来实现Tcp的通讯,这部分已经有人写了比较好的<em>异步</em>服务器代码 http://www.cnblogs.com/gaochundong/archive/2013/04/14/csharp_async
Java Socket收发异步长连接
最近做SSO的项目,其中用到了<em>socket</em>长连接.一直都是看代码的,但是要求<em>socket</em>做成SSL的,不得不动手写写代码了.下面我给出一个简单的<em>socket</em>长连接. Java代码 SocketClient.java  SocketClient.java Java代码 import java.io.IOException; 
socket端口如何解除bind
转自: 1. 如果在已经处于 ESTABLISHED状态下的<em>socket</em>(一般由端口号和标志符区分)调用 close<em>socket</em>(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该<em>socket</em>: BOOL bReuseaddr=TRUE; setsockopt(s,SOL_SOCKET ,SO_REUSEADDR,(const char*)&bReuseaddr,siz
Socket网络同步异步编程+邮件发送代码+TCP/IP原理解析
第一章发送邮件所需要学习的类 需要引用的命名空间:System.Net.Mail 此命名空间包含了将电子邮件发送到简单邮件的传输协议(SMTP)服务器进行传送的类。 该命名空间中的类: 1)MailMessage类:代表的是可以使用SmtpClient类发送的电子邮件,主要用于设置发送电子邮件时,收件人,发件人及邮件内容的一些相关信息。 2)其中SmtpClient类允许应用程序使用简单邮件传
C#中异步SOCKET发送数据时内存问题
做CS的开发一直都是这样的方式: server端用 C++编写,采用IOCP机制处理大量客户端连接、数据接收发送的问题 client端用 C++ 或C# 写,没什么特殊要求。 最近工作时间上比较宽裕,决定采用新的方式来处理服务端的工作: C# + SOCKET<em>异步</em>机制(.net里没有IOCP的直接支持) 目前正可行性分析阶段,第一步的工作:接收3W个SOCKET
socket开发遇到的问题及注意事项实战
想做长连接,要知道几个基本问题: 1.运营商网络是否稳定,他们的ip是否变化。大家知道一切TCP/IP协议都要涉及到IP地址。一个移动设备在连网使用时,运营商会给你分配一个动态IP。若运营商发现你一段时间不使用就回收你的动态IP,分配给其他人,毕竟运营商的动态IP是有限的。每个省份的运营商给你的这段时间都不相同,有的是15分钟,有的是30分钟,甚至更久。所以你的长连接要保证这个间隔至少发送一次报...
socket中TCP的三次握手建立连接&四次握手释放详解
A.TCP建立连接要进行&quot;三次握手&quot;,也就是交换三个分组。大致流程如下:&amp;gt;客户端向服务器发送一个SYN J&amp;gt;服务器向客户端响应一个SYN K,并对SYN J进行确认ACK J+1&amp;gt;客户端再向服务器发一个确认ACK K+1当客户端调用connect时,触发连接请求,向服务器发送了SYN J包,这时候connect进入阻塞状态(等待服务器回复应答);服务器监听到连接请求,也就是收到了...
c#Socket通信入门实例
在C#中使用<em>socket</em>通信,只要使用 visual studio中自带的 using System.Net和 using System.Net.Sockets;命名空间,这样就可以进行通信了。 一般服务端先运行,然后在运行客户端。 其<em>socket</em>通信的流程如下: 服务端: 1:创建一个<em>socket</em>的<em>对象</em>,Socket <em>socket</em>server=new
asio socket::close时异步操作的处理
asio中<em>socket</em>通常的用法如class Session { public: void HandleRead(const boost::system::error_code& error, size_t bytes_transferred) { if (error) { delete this;
C#.net同步异步SOCKET通讯和多线程总结(5)tcp发送和接受的代码
基于TCP协议的发送和接收端 TCP协议的接收端 using System.Net.Sockets ; //使用到TcpListen类 using System.Threading ; //使用到线程 using System.IO ; //使用到StreamReader类 int port = 8000; //定义侦听端口号 private Thread thThreadRead;
Linux下的异步TCP socket及实例
Linux下的<em>异步</em>TCP <em>socket</em>及实例 同步<em>socket</em>通讯时,程序会阻塞在诸如(connect、accept、recv、recvfrom)等操作上,直到有事件发生时才会继续。而在<em>异步</em>通讯交互中,两方可以任意发送消息,当有数据要接收时,会收到系统消息提示来接收数据,而不会阻塞。在Linux下基于<em>socket</em>的<em>异步</em>通讯可以有多种方式,比较常用的有select方式、epoll方式和<em>异步</em>消息
C# Socket的安全关闭
网络编程中,<em>socket</em>的安全关闭方法 /// /// Close the <em>socket</em> safely. /// /// The <em>socket</em>. public static void SafeClose(this Socket <em>socket</em>) { if (<em>socket</em> ==
c# socket 通信demo 亲测可用,断开连接事件
.NET C#SOCKET通信DEMO,断开连接事件捕捉,重连功能。 亲测可用
websocket使用时遇到的伪技术问题
vertx是一个轻量,灵活的后端框架,最近在使用vertx时使用了它的web<em>socket</em>,对于web<em>socket</em>相信搞过开发的都 不会很陌生,在vertx中的使用也很简单,大概如下 HttpServerOptions options =new HttpServerOptions(); options.setReuseAddress(true).setSoLinger(0); options...
C#异步SOCKET发送帮肋类,支持UDP,TCP
可复用的<em>异步</em>发送数据帮肋类,支持UDP,TCP.采用了池技术,大大提高对像利用.
Linux下TCP连接断开后不释放的解决办法
Linux下TCP连接断开后不<em>释放</em>的解决办法
端口重叠情况下Socket的创建与释放
就一个Socket完成传输后重建的问题,被坑了整整两天。 在这里简单记录 一下。 为了完成NET穿透,在客户端我们用 TCPClient 使用随机端口号,创建一个到服务器的连接,然后在相同的端口上,再新建一个Socket,并在这个Socket上打开侦听,等待网络上,特别是公网上的连接。 公网上的服务器,为了支持浏览器访问,是一个long-pulling类型的信息交换服务,同时支
一个基于VB.net的异步Socket网络TCP通信
一个基于VB.net的<em>异步</em>Socket网络TCP通信
C#主窗体控件打开一个子窗体,子窗体关闭后,再重新打开子窗体出现:无法访问已经释放对象
主窗体一个按键按下显示一个子窗体; 在子窗体的FormClosing事件中添加: 这样就不会出现同时显示两个子窗体,并且关闭子窗体后,再次打开不会出现 ”<em>无法访问</em>已经<em>释放</em>的<em>对象</em>的提示“ ; 因为我们关闭操作只把窗体可视化隐藏了,而关闭操作也被我们取消了;             this.Visible = false;             e.Can
使用Java NIO实现异步socket通信
最近在学习NIO与<em>socket</em>,发现了一组比较好的文章:http://blog.csdn.net/kongxx/article/details/7288896。这篇文章使用Selector来管理ServerSocketChannel,事实上不是没有做到真正的<em>异步</em>,还是按部就班地接受连接,收发信息,然后<em>释放</em>连接。更常规的方法是服务端使用两个线程,一个线程才用阻塞的方法来accept客户端,另一个线程
TCP的socket编程中常见问题及注意事项
TCP的<em>socket</em>编程中常见问题及注意事项
C# socket连接断开问题
你得学会并且学得会的Socket编程基础知识 这一篇文章,我将图文并茂地介绍Socket编程的基础知识,我相信,如果你按照步骤做完实验,一定可以对Socket编程有更好地理解。 本文源代码,可以通过这里下载 http://files.cnblogs.com/chenxizhang/SocketWorkshop.rar   第一步:创建解决方案 第二步:创建服务端程序 这里可
c# socket 客户端异步实现
简易封装:using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Net; using System.Net.Sockets;namespace dclient { public delega
Python全栈工程师(20:Socket编程9-事件驱动与异步IO)
论事件驱动与<em>异步</em>IO通常,我们写服务器处理模型的程序时,有以下几种模型:(1)每收到一个请求,创建一个新的进程,来处理该请求;如:scoketserver(2)每收到一个请求,创建一个新的线程,来处理该请求;如:<em>socket</em>server中的threading<em>tcp</em>server、forking<em>tcp</em>server(3)每收到一个请求,放入一个事件列表,让主进程通过非阻塞I/O方式来处理请求(事件驱动)...
Socket.Poll()用法与说明
Socket.Poll() public bool Poll (                     int microSeconds,                     SelectMode mode ) MSDN: Poll 方法将会检查 Socket 的状态。指定 selectMode 参数的 SelectMode.SelectRead,可确定 Socket 是否为
go简易tcp socket客户端和服务器
go简易<em>tcp</em> <em>socket</em>客户端和服务器1.Socket编程以前使用Socket编程时,一般是如下步骤 建立<em>socket</em>,<em>socket</em> 绑定<em>socket</em>,bind 监听,listen 接受连接,accept 接受/发送,recv/send go <em>tcp</em>版真的很省事 服务端: 就是Listen、Accept、Read/Write 客户端 就是Dial、Read/Write直接上代码2.Ser
Windows Socket 异步编程(非阻塞模式) -- Select回送示例
使用Select<em>异步</em>模式来实现返送示例。服务器启动并监听9999端口,并将收到的客户端信息打印并返送给客户端。 重点理解的是:一个套接字是否是可读、可写状态。当服务器端<em>socket</em>在Accept成功之后,便是可读状态,接收客户端发送数据。当客户端发送recv函数时,这个<em>socket</em>便成为可写状态,服务器端便知道这个客户端可写,然后根据自己的定义发送给客户端内容。如果客户端不发送recv函数,
网络通信——socket(TCP/IP).Http,同步和异步的区别
1首先说下同步和<em>异步</em>的区别吧 同步:提交请求->等待服务器处理->处理完毕返回 这个期间客户端浏览器不能干任何事 (比如 普通B/S模式) <em>异步</em>:请求通过事件触发->服务器处理(这是浏览器仍然可以作其他事情)->处理完毕 (AJAX技术(<em>异步</em>))   举个栗子说: 同步   就是你叫我去吃饭,我听到了就和你去吃饭;如果没有听到,你就不停的叫,直到我告诉你听到了,才
C++服务器(六):socket 异步模型与select 的实现
之前在另一篇博客上提到一些关于<em>socket</em> 的<em>异步</em>模型的资料,其中有一篇博客写得很详细,在此附上链接: <em>socket</em>阻塞与非阻塞,同步与<em>异步</em>、I/O模型[1]这篇博客已经讲得很好了。但是我还是觉得,有必要的话,应该捧个书本系统地探究一下<em>socket</em> <em>异步</em>模型的区别和实现。在这里,我选择的实现是使用select 模型。 原因如下: 服务器目前只是个人使用,所以,流量并不会很大,少数的<em>socket</em>
Unity中的Socket通信(多个客户端的异步通信)
Unity中使用Socket实现时时通信 通信应该实现的功能: 服务器可以实时监听多个客户端服务器可以实时监听某一个客户端消息服务器可以时时给某一个客户端发消息首先我们需要定义一个客户端<em>对象</em>
socket中TCP建立连接与释放连接
TCP建立连接需要“三次握手” 客户端想服务端发送连接请求,
C#实现Socket编程 (异步通讯,解决Tcp粘包)第三阶段
C#实现Socket编程 (<em>异步</em>通讯,解决Tcp粘包)
连接数过多导致服务无法正常运行
原因:windows系统BUG,微软官网有详细介绍,系统并发过大,连接数过多,部分<em>socket</em>连接无法<em>释放</em>关闭,而持续请求又导致无法<em>释放</em>的<em>socket</em>连接不断积压,最终导致No buffer space available 1.对于windows环境,可通过修改注册表进行配置: \HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\S
C# Socket编程 通过线程方式的异步
文章目录前言TCP编程 前言 通过几个图可以很好的总结编程逻辑 https://www.cnblogs.com/dream844/archive/2012/06/12/2546083.html 这个博客总结的很好,但是有些内容我不是很理解,以后<em>遇到</em>再去研究好了 https://www.cnblogs.com/jikexianfeng/p/6413262.html 介绍什么是DMA <em>异步</em>是目的,为...
c# 关闭socket的标准方法
c#关闭<em>socket</em>时,单独使用<em>socket</em>.close()通常会造成资源提前被<em>释放</em>,应该在关闭<em>socket</em>之前,先使用shutdown进行接受或者发送的禁用,再使用<em>socket</em>进行<em>释放</em>。
VC异步Socket TCP_demo
VC TCP/IP 支持<em>异步</em>传输 使用CCESocket ,客户/服务端示例和代码
Socket编程 (异步通讯,解决Tcp粘包)
从上一章的通讯中,我们发现如果使用Tcp连续发送消息会出现消息一起发送过来的情况,这样给我们编程造成一定的问题,给我们的信息解析造成一定的问题。那么这篇文章就将针对以上问题给出解决方案......   问题一般会出现的情况如下,假设我们连续发送两条两天记录("我是liger_zql"): 模拟发送示例:  #region 测试消息发送,并匹配协议 TcpClient
System.ObjectDisposedException: 无法访问释放对象
我用C#仿照别人的写一个控件,其中用到了WebBrowser, 编译后放到HTML中,结果确出现以下错误rn有关调用实时(JIT)调试而不是此对话框的详细信息,rn请参见此消息的结尾。rnrn************** 异常文本 **************rnSystem.ObjectDisposedException: <em>无法访问</em>已<em>释放</em>的<em>对象</em>。rn<em>对象</em>名:“WebBrowser”。rn 在 System.Windows.Forms.WebBrowser.get_AxIWebBrowser2()rn 在 System.Windows.Forms.WebBrowser.PerformNavigate2(Object& URL, Object& flags, Object& targetFrameName, Object& postData, Object& headers)rn 在 System.Windows.Forms.WebBrowser.PerformNavigateHelper(String urlString, Boolean newWindow, String targetFrameName, Byte[] postData, String headers)rn 在 System.Windows.Forms.WebBrowser.Navigate(String urlString)rn 在 CSharpActiveX.Hello.btnGo_Click(Object sender, EventArgs e) 位置 D:\VC++\CSharpActiveX\CSharpActiveX\Hello.cs:行号 110rn 在 System.Windows.Forms.Control.OnClick(EventArgs e)rn 在 System.Windows.Forms.Button.OnClick(EventArgs e)rn 在 System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)rn 在 System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)rn 在 System.Windows.Forms.Control.WndProc(Message& m)rn 在 System.Windows.Forms.ButtonBase.WndProc(Message& m)rn 在 System.Windows.Forms.Button.WndProc(Message& m)rn 在 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)rn 在 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)rn 在 System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)rnrnrnrn************** JIT 调试 **************rn要启用实时(JIT)调试,rn该应用程序或计算机的 .config 文件(machine.config)的 system.windows.forms 节中必须设置rnjitDebugging 值。rn编译应用程序时还必须启用rn调试。rnrn例如: rnrnrn rnrnrn启用 JIT 调试后,任何无法处理的异常rn都将被发送到在此计算机上注册的 JIT 调试器,rn而不是由此对话框处理。rnrnHTML文件代码是rnrnrn rn ActiveX测试rnrnrnrnrnrnrnrnC#的原代码:rnusing System;rnusing System.Collections.Generic;rnusing System.ComponentModel;rnusing System.Drawing;rnusing System.Data;rnusing System.Text;rnusing System.Windows.Forms;rnusing System.Runtime.CompilerServices;rnusing System.Runtime.InteropServices;rnusing System.Security; rnrnnamespace CSharpActiveXrnrn [Guid("4A44CF4E-F859-4328-AA22-3E9D7AFFF1AB")]rn public partial class Hello : UserControl, IObjectSafetyrn rn public Hello()rn rn InitializeComponent();rn rnrn #region IObjectSafety 成员rn private const string _IID_IDispatch = "00020400-0000-0000-C000-000000000046";rn private const string _IID_IDispatchEx = "a6ef9860-c720-11d0-9337-00a0c90dcaa9";rn private const string _IID_IPersistStorage = "0000010A-0000-0000-C000-000000000046";rn private const string _IID_IPersistStream = "00000109-0000-0000-C000-000000000046";rn private const string _IID_IPersistPropertyBag = "37D84F60-42CB-11CE-8135-00AA004BB851";rn private const int INTERFACESAFE_FOR_UNTRUSTED_CALLER = 0x00000001;rn private const int INTERFACESAFE_FOR_UNTRUSTED_DATA = 0x00000002;rn private const int S_OK = 0;rn private const int E_FAIL = unchecked((int)0x80004005);rn private const int E_NOINTERFACE = unchecked((int)0x80004002);rn private bool _fSafeForScripting = true;rn private bool _fSafeForInitializing = true;rn public int GetInterfaceSafetyOptions(ref Guid riid, ref int pdwSupportedOptions, ref int pdwEnabledOptions)rn rn int Rslt = E_FAIL;rn string strGUID = riid.ToString("B");rn pdwSupportedOptions = INTERFACESAFE_FOR_UNTRUSTED_CALLER | INTERFACESAFE_FOR_UNTRUSTED_DATA;rn switch (strGUID)rn rn case _IID_IDispatch:rn case _IID_IDispatchEx:rn Rslt = S_OK;rn pdwEnabledOptions = 0;rn if (_fSafeForScripting == true)rn pdwEnabledOptions = INTERFACESAFE_FOR_UNTRUSTED_CALLER;rn break;rn case _IID_IPersistStorage:rn case _IID_IPersistStream:rn case _IID_IPersistPropertyBag:rn Rslt = S_OK;rn pdwEnabledOptions = 0;rn if (_fSafeForInitializing == true)rn pdwEnabledOptions = INTERFACESAFE_FOR_UNTRUSTED_DATA;rn break;rn default:rn Rslt = E_NOINTERFACE;rn break;rn rn return Rslt;rn rn public int SetInterfaceSafetyOptions(ref Guid riid, int dwOptionSetMask, int dwEnabledOptions)rn rn int Rslt = E_FAIL;rn string strGUID = riid.ToString("B");rn switch (strGUID)rn rn case _IID_IDispatch:rn case _IID_IDispatchEx:rn if (((dwEnabledOptions & dwOptionSetMask) == INTERFACESAFE_FOR_UNTRUSTED_CALLER) && (_fSafeForScripting == true))rn Rslt = S_OK;rn break;rn case _IID_IPersistStorage:rn case _IID_IPersistStream:rn case _IID_IPersistPropertyBag:rn if (((dwEnabledOptions & dwOptionSetMask) == INTERFACESAFE_FOR_UNTRUSTED_DATA) && (_fSafeForInitializing == true))rn Rslt = S_OK;rn break;rn default:rn Rslt = E_NOINTERFACE;rn break;rn rn return Rslt;rn rn #endregionrnrn private void button1_Click(object sender, EventArgs e)rn rn SetTime(DateTime.Now.ToLongTimeString());rn rnrn public void SetTime(string timeStr)rn rn this.label2.Text = timeStr;rn rnrn public void SayHello()rn rn SetTime("出错了");rn rnrn private void button2_Click(object sender, EventArgs e)rn rn this.label2.BackColor = Color.Red;rn rnrn private void btnGo_Click(object sender, EventArgs e)rn rn this.Browser.Navigate(txtAddr.Text);rn rnrn private void btnPreview_Click(object sender, EventArgs e)rn rn IOleCommandTarget pCmdTarg = Browser.ActiveXInstance as IOleCommandTarget;rn Guid CGID_MSHTML = GlobalConst.CGID_MSHTML;rnrn string vTemplatePath = txtTemplateAddr.Text;rn Object[] o = new object[1] vTemplatePath ;rnrn pCmdTarg.Exec(ref CGID_MSHTML,rn GlobalConst.IDM_PRINTPREVIEW,rn (uint)OLECMDEXECOPT.OLECMDEXECOPT_PROMPTUSER,rn o,rn null);rn rnrn private void btnPrint_Click(object sender, EventArgs e)rn rn IOleCommandTarget pCmdTarg = Browser.ActiveXInstance as IOleCommandTarget;rn Guid CGID_MSHTML = GlobalConst.CGID_MSHTML;rnrn string vTemplatePath = txtTemplateAddr.Text;rn Object[] o = new object[1] vTemplatePath ;rnrn pCmdTarg.Exec(ref CGID_MSHTML,rn GlobalConst.IDM_PRINT,rn (uint)OLECMDEXECOPT.OLECMDEXECOPT_PROMPTUSER,rn o,rn null); rn rn rnrnrn接口IObjectSafety.cs:rnusing System;rnusing System.Collections.Generic;rnusing System.Text;rnusing System.Runtime.InteropServices; rnrnnamespace CSharpActiveXrnrn [ComImport, GuidAttribute("CB5BDC81-93C1-11CF-8F20-00805F2CD064")]rn [InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)] rn public interface IObjectSafetyrn rn [PreserveSig]rn int GetInterfaceSafetyOptions(ref Guid riid, [MarshalAs(UnmanagedType.U4)] ref int pdwSupportedOptions, [MarshalAs(UnmanagedType.U4)] ref int pdwEnabledOptions); rn [PreserveSig()] rn int SetInterfaceSafetyOptions(ref Guid riid, [MarshalAs(UnmanagedType.U4)] int dwOptionSetMask, [MarshalAs(UnmanagedType.U4)] int dwEnabledOptions); rn rnrnrn接口IOleCommandTarget.cs:rnusing System;rnusing System.Collections.Generic;rnusing System.Text;rnusing System.Runtime.InteropServices;rnusing System.Runtime.InteropServices.ComTypes;rnrnnamespace CSharpActiveXrnrn [ComImport(), Guid("B722BCCB-4E68-101B-A2BC-00AA00404770"),rn InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]rnrn public interface IOleCommandTargetrn rn [PreserveSig()]rn int QueryStatus([In, MarshalAs(UnmanagedType.Struct)] ref Guidrn pguidCmdGroup, [MarshalAs(UnmanagedType.U4)] int cCmds,rn [In, Out] IntPtr prgCmds, [In, Out] IntPtr pCmdText);rn [PreserveSig()]rn int Exec(ref Guid pguidCmdGroup, uint nCmdID, uint nCmdExecOpt,rn [In, MarshalAs(UnmanagedType.LPArray)] object[] pvaIn,rn [In, Out, MarshalAs(UnmanagedType.LPArray)] object[] pvaOut);rnrn rnrn public enum OLECMDEXECOPTrn rn OLECMDEXECOPT_DODEFAULT,rn OLECMDEXECOPT_PROMPTUSER,rn OLECMDEXECOPT_DONTPROMPTUSER,rn OLECMDEXECOPT_SHOWHELPrn rn public static class GlobalConstrn rn public const int MSOCMDEXECOPT_DONTPROMPTUSER = 2;rn public const int IDM_PRINT = 0x1b;rn public const int IDM_PRINTPREVIEW = 0x7d3;rn public static readonly Guid CGID_MSHTML = new Guid("DE4BA900-59CA-11CF-9592-444553540000");rn public static readonly Guid IID_OleCommandTarget = new Guid("B722BCCB-4E68-101B-A2BC-00AA00404770");rn rnrnrnrn生成后rn再部署安装Setup后rnrn打开HTML页,click me和button2均无问题,rn在Document address中输入:http://www.sohu.com 然后点击Go就出现上面的错误.rn也就是说程序在rn private void btnGo_Click(object sender, EventArgs e)rn rn this.Browser.Navigate(txtAddr.Text);rn rn出错,不知怎样解决.rnrn
基于C#的Socket同步和异步通信(TCP/UDP)【入门推荐】
一个简单的Socket通信实例,基于控制台:             新建控制台项目,命名Server: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Net; using
一个基于VB.net的异步Socket网络TCP通信可防止任意一端意外终止TCP连接的类,。
之前,因为要做一个TCP通信的项目,有研究一下Socket类,但是为了快速完成任务,还是在网上找了一些源码来调试测试,发现很多源码都无法触发TCP连接的任意一端 的突然意外中断连接的事件,于是本人基于他人的源码基础上进行了修改,可以触发这一事件,可使TCP连接的另一端触发对方已经终止TCP连接事件。 以下,奉上本人修改后的源码类: 1)TCP 服务器TCP 侦听类。
Linux下socket异步通讯聊天程序
Linux下<em>socket</em><em>异步</em>通讯聊天程序(转) original from: http://yangqi.org/linux-<em>socket</em>-asynchronous-im-system/ Posted by yangqi @ 2010年02月17日 [Wed] 22:37 网络课的project 1能用到的资料,程序结构比较清晰,转来学习一下 什么是<em>异步</em>通讯? 就是通讯任意一方可
关于 无法访问释放对象
一个FORM,FORM中一个按钮,一个TEXTBOX:rnbutton 事件rnrn Private Sub btnOutput_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rnrnbtnLogin.Clickrn Dim myThreadStart As Threading.ThreadStart = New Threading.ThreadStart(AddressOf _OutPutMessage)rn Dim myThread As Threading.Thread = New Threading.Thread(myThreadStart)rn myThread.Start()rnrn End Subrnrn执行后:rnrn不断向Textbox输出信息。rnrn执行过程中,强行关闭form,会出现以上的错误,有什么办法能避免吗?rnrn目前我只能用Try 。。 Catch 。。end try 时间来处理rnrn[code=C#]rnSystem.ObjectDisposedException: <em>无法访问</em>已<em>释放</em>的<em>对象</em>。rn<em>对象</em>名:“TextBox”。rn 在 System.Windows.Forms.Control.CreateHandle()rn 在 System.Windows.Forms.TextBoxBase.CreateHandle()rn 在 System.Windows.Forms.TextBoxBase.SetSelectedTextInternal(String text, Boolean clearUndo)rn 在 System.Windows.Forms.TextBoxBase.set_SelectedText(String value)rn 在 System.Windows.Forms.TextBoxBase.AppendText(String text)rn 在 HtmlAnalysis.MainForm.OutPutMessage(String _x, String _y, String _qty, String _soldier) 位置 D:\程rnrn序代码\HtmlAnalysis\HtmlAnalysis\MainForm.vb:行号 115rn 在 HtmlAnalysis.MainForm.OutPutMessage() 位置 D:\程序代码\HtmlAnalysis\HtmlAnalysis\MainForm.vb:行号 rnrn149rn[/code]rnrnrn
C#TCP Socket异步通讯
zip包里有两个程序,一个server端一个client端,采用了微软建议的<em>socket</em><em>异步</em>模式,先启动server程序,client端修改app.config serverhost value值,运行即可。
用了invoke还是出错的解决方法.wpf 调用线程无法访问对象,因为另一个线程拥有该对象
调用线程<em>无法访问</em>此<em>对象</em>,因为另一个线程拥有该<em>对象</em>。一般来说可以这么做 在C#2005后不再支持多线程直接访问界面的控件(界面创建线程与访问线程不是同一个线程),但是可以可以使用delegate来解决。 次线程不能直接修改主线程UI的界面,需要使用以下方法 方法1: [c-sharp] view plaincopy this.Dispatch
使用C#task和异步socket实现多线程服务器
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading;using System.Threading.Tasks;using System.Net;using System.Net.Sockets;namespace 并发编程{    class...
关于窗体的释放问题
模式窗口用:form2 := TForm2.Create(Application);tryif form2.showModal = mrOK then  {do Something}finallyform2.free;form2 := nil;end; 非模式窗口用:if not Assigned(form2) thenform2 := Tfrom2.Create(Application);for...
c++ socket 异步编程
在网络通讯中,由于网络拥挤或一次发送的数据量过大等原因,经常会发生交换的数据在短时间内不能传送完,收发数据的函数因此不能返回,这种现象叫做阻塞。 Winsock对有可能阻塞的函数提供了两种处理方式:阻塞和非阻塞方式。 阻塞模式      在阻塞方式下,收发数据的函数在被调用后一直要到传送完毕或者出错才能返回。在阻塞期间,被阻的函数不会断调用系统函数GetMessage()来保持消息循环
使用IOCP完成端口和SOCKET封装的成熟异步TCP类
使用IOCP完成端口和SOCKET封装的<em>异步</em>TCP类。 支持客户端和服务器的常用TCP接口:绑定Bind、监听Listen、接收Recv、连接Conn、发送Send、关闭Close。所有接口均使用<em>异步</em>回调的方式处理,内部实现使用Windows下性能最高的IOCP完成端口网络模型,并很好地处理了多线程安全和同步问题。 线程创建和事件信号量等地方用到了MFC的类,如果项目不支持MFC,可以把这些地方替换成WindowsAPI的方式。 代码是从成熟项目中分离出来的,能达到很高的性能和网络吞吐量,并且稳定无BUG。
asp.net 无法访问已关闭的资源集
<em>遇到</em>这个问题,最简单直接的方式有:1 重新给web服务器上传一个文件;2 在Internet Information Server,找到default pool菜单(一般在server 系统的IIS当中才有,在默认网站菜单上面),点击鼠标右键,选择“回收”,这样网站就可以打开了。   你也可以选择“属性”,然后在属性页面里设置default pool回收内存的时间点,还有回收周期,如120,代表2个小时。 要从根本上解决此类问题发生:<
Unity3D总结记录(十四) Unity中Sockets的运用服务器端可连接多个客户端
using System.Collections;using System.Collections.Generic;using UnityEngine;using System.Net;using System.Net.Sockets;using System.Text;using System.Threading;using UnityEngine.UI;using System.Compone...
Unity3D 使用异步socket通讯
C# 中Socket的<em>异步</em>方法,都是以Begin开始表示开启<em>异步</em>调用,以End开始表示结束<em>异步</em>调用线程。根据官方文档的介绍,Begin方法会在后台开启线程操作,完成后回调注册函数。分为三个部分,建立连接,接收数据,发送数据,全部使用<em>异步</em>调用。 首先,<em>异步</em>建立连接。 public static void SocketConnect(string server, int por
C# 异步TCP Socket 多人聊天室(1服务器,N客户端)
C# <em>异步</em>TCP Socket 多人聊天室(1服务器,N客户端) C# <em>异步</em>TCP Socket 多人聊天室(1服务器,N客户端) C# <em>异步</em>TCP Socket 多人聊天室(1服务器,N客户端) C# <em>异步</em>TCP Socket 多人聊天室(1服务器,N客户端) C# <em>异步</em>TCP Socket 多人聊天室(1服务器,N客户端) C# <em>异步</em>TCP Socket 多人聊天室(1服务器,N客户端)
socket结束后如何立刻释放端口
结束一个应用之后,用netstat查看应用启动的<em>socket</em>端口还在TIME_WAIT状态。 也可以用  lsof -i:端口号查看端口被哪个进程占用。 原因是 正常情况下:TCP断开连接的4次挥手中处于TIME_WAIT方需要等待一段时间,已防止最后的ACK分解丢失,这样导致服务器端的端口也仍然处于使用中。 解决方法: 设置setsockopt的SO_REUSEADDR选项,就
Boost.asio实现的同步、异步TCP通信的简单例子
每个asio程序都必须有io_server<em>对象</em>。对于服务端和客户端都需要<em>socket</em><em>对象</em>,通过<em>socket</em><em>对象</em>的成员函数进行连接和数据通信。服务端需要 acceptor<em>对象</em>来等待连接。下面的例子是用C++11和boost1.57编写的。同步TCP通信服务端#include #include using namespace boost::asio
【python网络编程】利用select实现socket全双工异步通信
在上一篇博文中,我们实现了<em>tcp</em>客户端与服务器的通信,但是功能十分局限,发送消息与接收消息不能同时进行。 接下来我将通过select这个模块,来实现全双工通信(随时可以接收信息以及发送信息),当然,用多线程也可以完成,这是后话。
断开套接字连接-----网络编程(Linux----C)
断开套接字连接-----网络编程(Linux----C) 1、基于TCP的半关闭 (1)单方面断开连接带来的问题 Linux的close函数和Windows的close<em>socket</em>函数意味着完全断开连接,完全断开不仅指无法传输数据,而且也不能接收数据。在某些情况下,通信一方调用close或close<em>socket</em>函数断开连接就显得不太优雅。 2台主机正在进行双向通信,主机A发送完最后
Linux socket 阻塞与非阻塞,同步与异步、I/O模型
1. 概念理解      在进行网络编程时,我们常常见到同步(Sync)/<em>异步</em>(Async),阻塞(Block)/非阻塞(Unblock)四种调用方式: 同步:       所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。也就是必须一件一件事做,等前一件做完了才能做下一件事。 例如普通B/S模式(同步):提交请求->等待服务器处理->处理
C#网络编程系列文章(一)之Socket实现异步TCP服务器
原创性声明 开篇 本人因为对于网络编程的喜爱,经常性的使用c#编写各类服务器(e.g TCP服务器,UDP服务器),但是基本上都是搞着玩,网上也有很多讲c#网络编程的文章,当然我也参考了很多作者写的文章。看了这篇文章以后再也不用导出找资料了。 本系列文章会依次介绍使用Socket实现的<em>异步</em>TCP服务器、同步TCP服务器、<em>异步</em>UDP服务器、同步UDP服务器 and 使用TcpListe
C#的TCP异步SOCKET通讯类
C#的TCP<em>异步</em>SOCKET通讯类 C# TCP <em>异步</em> SOCKET 通讯 类,非常实用的一个类
异步TCP通讯程序
<em>异步</em>TCP通讯程序 <em>异步</em> TCP <em>socket</em> 通讯 程序
JAVA使用Socket进行异步通讯
本文章除了基本的<em>socket</em>知识以外,还用到了包括死循环获取用户连接请求,<em>异步</em>多线程的消息读取和写入等知识,博主前后在踩坑上花的时间至少都有10个小时,希望能帮助到你 从第一次接触<em>socket</em>到现在已经经过了小半年的时间,当时老师只是提了一下<em>socket</em>通讯是长连接,一个<em>socket</em>可以互相发送多次消息,但是具体实现大家都没有做出来,复制了网上的代码进行实现也不知道原理是什么,今天终于又花了将近
非阻塞socket之send的使用---异步send
(1)错误现象:在发送小量数据的时候没有问题,一次发送完毕。但是当发送1008046个字节的时候,由于数据较大,系统一次约发送46336个字符,但是时而发送成功,时而中间断掉。现象是不稳定,并且返回Resource temporarily unavailable的errno, 资源暂时不可用,显然这是由于没有约束没有限制的把数据抛给系统。显然是不对的。需要发送的条件成立的时候才可以接着发送。后来
【Python】使用socketserver建立一个异步TCP服务器
这篇文章是讲解如何使用<em>socket</em>server建立一个<em>异步</em>TCP服务器,其中Python版本为3.5.1。
BOOST::ASIO多线程下socket关闭导致进程崩溃问题定位及解决
背景:         本系统为我公司开发的一套商用车车联网系统的网关子系统,采用C++基于BOOST库开发,网络开发库采用了BOOST的ASIO库,线程池采用了基于BOOST的ThreadPool库。         本次问题中涉及两个线程在不同时刻对同一个SOCKET的操作,这两个线程分属不同的类。 现象:     系统接入实车进行测试后,在某些场景开会在read时发生异常,或直接
c#写的Scoket异步高并发并客户端和服务器
c#写的Scoket<em>异步</em>高并发并校验的客户端和服务器,并且经过测试比较完美!
C#:简单的Socket异步通信功能(客户端)
上一篇(http://www.rexcao.net/archives/159)讲了服务端使用Socket发送消息的方法,这一篇来解决一下客户端如何接收服务端消息的问题。 目标 1、<em>异步</em>接收服务端消息并显示 2、发送自定义消息给服务端(由于上一篇做的是Windows服务,没有界面,这个需要另行处理才可以显示客户端的消息) 思路 1、<em>异步</em>从一个已连接的Socket<em>对象</em>中获
异步socket优雅的关闭-CancelIO和SO_LINGER
我们在利用IOCP(完成端口)进行程序设计的时候,经常要关闭一些不满足条件的套接字。假如我们直接采用close<em>socket</em>方法进行关闭的话,绑定到IO端口的此套接字的未发送的数据就会丢失,这种情况是我们不愿意发生的。下面介绍一种合理关闭此套接字的方法:   首先,利用setsockopt(MSDN)函数设定套接字的选项,我们把此套接字设定为:假如有数据未发送,当数据发送完后再关闭此套接字。
利用wireshark学习tcp的链接建立与释放
参考文章 http://www.cnblogs.com/Jessy/p/3535612.html http://blog.csdn.net/whuslei/article/details/6667471/ 利用wireshark软件可以很清晰地理解<em>tcp</em>建立和<em>释放</em>的过程。 我们用TCP/UDP Socket调试工具 来模拟<em>tcp</em>的发送。 两台电脑,一台作为客户端,ip为192.1
Socket两种通信方式--同步和异步
同步和<em>异步</em>通信的区别 CAsyncSocket是<em>异步</em>通信,同时是非阻塞模式,CSocket是同步通信,同时是阻塞模式。另外,<em>异步</em>非阻塞模式被称为长连接,相反地,同步阻塞模式又被称为短连接。为了理解这两个模式,我选择网上举的例子进行理解: 设想你是一位体育老师,需要测验100位同学的400米成绩。你当然不会让100位同学一起起跑,因为当同学们返回终点时,你根本来不及掐表记录各位同学的成绩。 如果你每...
C# TCP异步通讯框架封装
最近用c#写了一个TCP<em>异步</em>通讯框架TCPHelper,用于服务端客户端通讯,采用<em>异步</em>和事件驱动的方式,使用者只需要初始化和装载事件即可使用,框架图粗略如下所示: 使用如下:(本文框架及实例下载地址) 服务端using System; using System.Collections.Generic; using System.Linq; using System.Text; using S
C# 基于socket实现的异步TcpServer和TcpClient
C#编写的TCP<em>异步</em>通信,采用Socket实现,(还可用C#对Socket的封装TcpClient和TcpListener实现) 包含服务端及客户端完整代码
jquery/js实现一个网页同时调用多个倒计时(最新的)
jquery/js实现一个网页同时调用多个倒计时(最新的) 最近需要网页添加多个倒计时. 查阅网络,基本上都是千遍一律的不好用. 自己按需写了个.希望对大家有用. 有用请赞一个哦! //js //js2 var plugJs={     stamp:0,     tid:1,     stampnow:Date.parse(new Date())/1000,//统一开始时间戳     ...
接口技术课后习题答案下载
计算机接口技术课后习题答案,习题一,二,三,四,五,六,七答案都有。 相关下载链接:[url=//download.csdn.net/download/budong1213/2123163?utm_source=bbsseo]//download.csdn.net/download/budong1213/2123163?utm_source=bbsseo[/url]
Google Android开发入门与实战_淘宝书局.part2.rar下载
Google Android开发入门与实战_淘宝书局.part2.rar Google Android开发入门与实战_淘宝书局.part2.rar Google Android开发入门与实战_淘宝书局.part1.rar 需要共同下载 文件比较大只好 分包了 相关下载链接:[url=//download.csdn.net/download/langxianw/2199794?utm_source=bbsseo]//download.csdn.net/download/langxianw/2199794?utm_source=bbsseo[/url]
C++注册表编程实例下载
C++注册表编程实例C++注册表编程实例C++注册表编程实例C++注册表编程实例 相关下载链接:[url=//download.csdn.net/download/qvbzyx/2386194?utm_source=bbsseo]//download.csdn.net/download/qvbzyx/2386194?utm_source=bbsseo[/url]
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 大数据学习遇到的坑 java tcp学习
我们是很有底线的