博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Socket网络编程]由于套接字没有连接并且(当使用一个 sendto 调用发送数据报套接字时)没有提供地址,发送或接收数据的请求没有被接受。...
阅读量:6573 次
发布时间:2019-06-24

本文共 807 字,大约阅读时间需要 2 分钟。

原文地址:,记录在此方便查看

解决办法:

MSDN的说明:

Close 方法可关闭远程主机连接,并释放所有与 Socket 关联的托管资源和非托管资源。关闭后,Connected 属性将设置为 false。

对于面向连接TCP的协议,建议先调用 Shutdown,然后再调用 Close 方法。这可以确保在已连接的套接字关闭之前,已发送和接收该套接字上的所有数据。

如果需要在不首先调用 Shutdown 的情况下调用 Close,则可以将 DontLingerSocket 选项设置为 false,并且指定一个非零的超时间隔,从而可以确保排队等待输出的数据得到发送。这样,Close 将会一直阻止到发送完该数据或指定的时限超时为止。如果将 DontLinger 设置为 false,并且指定了一个非零的超时间隔,Close 将会释放连接并自动放弃排队等待输出的数据。

 

aSocket.Shutdown(SocketShutdown.Both); aSocket.Close();

 

调用Shutdown方法,可以让应用程序不在接受和发送数据,和确保正在传输队列的数据继续传输,保证双方都能收到应用程序发出的所有数据

Shutdown的参数有三个取值Both, Receive, Send

Receive表示让应用程序不在接受数据

 

而Close()方法,会直接释放套接字的描述,会丢弃与套接字描述相关的所有资源,包括传输队列中的数据。这样可能造成传输的数据丢失

所以对于面向连接TCP的套接字,应该先调用Shutdown方法在调用Close方法

 

问题:

调用Shutdown方法产生以下异常

由于套接字没有连接并且(当使用一个 sendto 调用发送数据报套接字时)没有提供地址,发送或接收数据的请求没有被接受。

转载于:https://www.cnblogs.com/wolf-sun/p/3366156.html

你可能感兴趣的文章
谁拿了最多奖学金
查看>>
详解linux运维工程师入门级必备技能
查看>>
我的友情链接
查看>>
PhoneGap在Microsoft Visual Studio Express For Wi...
查看>>
Shell脚本的模块化和脚本复用
查看>>
暴力删除
查看>>
unable to bind to locking port 7054 within 45000 ms
查看>>
自动化运维之kickstart自动化部署安装操作系统
查看>>
C++前置声明的一个好处与用法
查看>>
Upgrade GI/CRS 11.1.0.7 to 11.2.0.2. Rootupgrade.sh Hanging
查看>>
vue组件样式scoped
查看>>
整站爬虫命令
查看>>
linux下ssh/sftp配置和权限设置
查看>>
微软职位内部推荐-SDE II
查看>>
SQLPlus获取oracle表操作SQL
查看>>
BFS(两点搜索) UVA 11624 Fire!
查看>>
字符串处理 BestCoder Round #43 1001 pog loves szh I
查看>>
How to add svn:externals in windows using TortoiseSVN
查看>>
JavaScript高级程序设计(5) 引用类型 (上)
查看>>
QT学习-10/31/2012
查看>>