C#中Socket 的Connect与BeginConnect方法有什么区别?
1条回答 默认 最新
- 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
张开双翼 2021-04-21 09:11最佳回答 专家已采纳函数原型如下:
public IAsyncResult BeginConnect(
EndPoint remoteEP,
AsyncCallback callback,
Object state
)
public bool ConnectAsync(
SocketAsyncEventArgs e
)
两个都开始一个对远程主机连接的异步请求。BeginConnect可以有一个 AsyncCallback 委托的回调方法来处理后续的事情,但是回调方法应调用 EndConnect 方法。 当应用程序调用 BeginConnect 时,系统将使用单独的线程执行指定的回调方法,并在 EndConnect 上一直阻止到 Socket成功连接或引发异常为止。 另外 如果想要在调用 BeginConnect 方法后使原始线程阻止,请使用 WaitOne。 当需要原始线程继续执行时,请在回调方法中调用ManualResetEvent 的 Set 方法。
对于ConnectAsync来说的话,若要在完成时得到通知,必须创建一个实现EventHandler<SocketAsyncEventArgs> 委托的回调方法,并将该回调连接到 SocketAsyncEventArgs.Completed事件。
总体上来说这两个方法实现的东西差不多,就看用户的习惯了。采纳该答案 已采纳该答案 专家已采纳评论解决 无用 1打赏举报微信扫一扫
分享评论登录 后可回复...
报告相同问题?
提交
相关推荐 更多相似问题
- 2021-04-20 09:04回答 1 已采纳 函数原型如下: public IAsyncResult BeginConnect( EndPoint remoteEP, AsyncCallback callback, Object state )
- 2021-09-29 11:19回答 1 已采纳 socket.BeginConnect(iep, new AsyncCallback(ConnectCallbackj), socket); byte[] send;原因连接后
- 2022-05-12 09:32回答 3 已采纳 服务端和客户端封装一个相同的数据结构JointData using System; /// <summary> /// 关节数据 /// </summary> [Serial
- 2021-12-01 11:27LintonL的博客 最近在做Unity端和服务端的Socket连接,照着网上的案例码自己的代码,遇到了很多坑,其中消耗我最多时间,并且...我连接服务端,用的都是Socket的Connect()方法(看的百度的案例。。。中坑了),然后出现了,会疯狂的
- 2020-12-23 03:47寒阳碎雪的博客 第一步:实现连接客户端连接代码:private void connect2Server(){Socket clientSocket;//服务器地址IPAddress ip = IPAddress.Parse("192.168.1.136");//服务器节点 IPEndPoint iep = new IPEndPoint(ip, 9004);//...
- 2020-12-23 03:46VDV空降兵费里的博客 tcpclient.BeginConnect(serverip, serverport,newAsyncCallback(CallBackMethod), tcpclient); if(TimeoutObject.WaitOne(timeoutMSec,false)) { if(IsConnectionSuccessful) { returntcpclient; }else { ...
- 2020-12-23 03:46王大定的博客 一、socket函数1、头文件:#include /* See NOTES */#include 2、函数原型:int socket(int domain, int type, int protocol);socket函数类似于open,用来打开一个网络连接,如果成功则返回一个网络文件描述符(int...
- 2020-09-15 15:06mosi357的博客 关于C#Socket的Connect连接失败后等待时间过长问题问题根结解决问题 问题根结 在客户端沟通服务器时,未连接上服务器时,代码会卡在socket.Connect( ); 这一行中。大约会卡住20到30秒,甚至更多。 解决问题 好像是...
- 2020-12-31 23:19.Net的System.Net.Sockets.TcpClient和System.Net.Sockets.Socket都没有直接为Connect/BeginConnect提供超时控制机制。因此,当服务器未处于监听状态,或者发生网络故障时,客户端连接请求会被迫等待很长一段时间,...
- 2016-12-05 23:57yuliying的博客 上面的代码中,调用BeginConnect后通过WaitOne方法阻止当前线程,如果在timeoutMSec时间内连接成功, 将在CallBackMethod回调中调用TimeoutObject.Set,解除被阻塞的连接线程并返回;否则,连接线程会在等待超时后...
- 2019-01-11 17:11kucoffee12的博客 最近在Socket编程的时候发现只能设置Send和Recieve的Timeout时间,而Connect方法的Timeout是固定的,大概有20-40s,如果用同步方法界面会卡死很长时间 下面搜集了几种通过异步的方式解决此问题的方法: 1.使用...
- 2019-06-03 18:23Igor Sun的博客 C#中, 对于Socket的请求,无论是同步还是异步,都没有提供超时机制,SendTimeout,ReceiveTimeout均无用.. 对于需要测试网络是否正常连接的情况下,超时控制很是有用, 如果服务器不存在,或是客户机网络异常,, 在没有设置...
- 2020-01-01 12:13jzdcf的博客 //用来往richtextbox框中显示消息 public void showClientMsg ( string msg ) { showClientMsg ( msg + "\r\n" ) ; } //监听函数 public void Listen ( ) { //设置端口 setPort =...
- 2020-11-10 16:46左右...的博客 1.封装socket内核,客户端服务端公用 /// <summary> /// socket内核 /// </summary> public class SFxSocket { private Socket _Socket; private string _IP; private int _Port; private ...
- 2021-07-17 14:21里昂IT的博客 关于C#Socket的Connect连接失败后等待时间过长问题 问题根结 解决问题 问题根结 在客户端连接服务器时,未连接上服务器时,代码会卡在socket.Connect( ); 这一行中。大约会卡住20到30秒,甚至更多。 解决问题 好像...
- 2015-05-26 17:23fieldchao的博客 今天突然发现c#版本的异步socket模型 没有直接提供timeout配置 测试了一下 有时候一次不成功的连接 等到api最后返回 可能要等20秒以上 所以就stack上面看了一下 发现有人实现过,遂直接上代码 大家需要就拿走吧using ...
- 2019-04-09 22:50彼岸大洋的博客 TcpClient tcpClient; byte[] byteBuffer= new byte[1024*4];...tcpClient.Client.BeginReceive(byteBuffer, 0, byteBuffer.Length, SocketFlags.None, ReceiveCallBack, null); // 参数: // buffer:...
- 2021-05-24 15:17weixin_44201102的博客 Socket是什么呢? 参考:https://blog.csdn.net/jia12216/article/details/82702960 Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/...
- 2020-12-26 10:25相对地,在异步模式下,服务器可以使用BeginAccept方法和EndAccept方法来完成连接到客户端的任务,在客户端则通过BeginConnect方法和EndConnect方法来实现与服务器的连接。 BeginAccept在异步方式下传入的连接尝试,...
- 2017-09-12 11:05wyljz的博客 _clientSocket.BeginConnect(ip, new AsyncCallback(ConnectCallBack), _clientSocket); } catch (Exception e) { throw e; } } private static void ConnectCallBack (IAsyncResult iar) { ...
- 没有解决我的问题, 去提问