1.服务器端未监听时,客户端阻塞
你可以打开一个工作线程连接服务器(防阻塞主线程),并且设置一个连接超时,或者超时重新连接
2.服务端关闭时,可以设一个属性把未发完的数据发送完再关闭,最好再在服务器关闭的时候发个消息给客户端,等客户端接受返回再关闭应该可以避免异常。客户端关闭同样处理
3。你可以把客户端的socket连接保存到一个Arraylist,通讯的时候只要针对你要通讯的socket来发送数据
另,加强异常处理力度以上意见仅供参考,说起来容易呀:)
你可以打开一个工作线程连接服务器(防阻塞主线程),并且设置一个连接超时,或者超时重新连接
2.服务端关闭时,可以设一个属性把未发完的数据发送完再关闭,最好再在服务器关闭的时候发个消息给客户端,等客户端接受返回再关闭应该可以避免异常。客户端关闭同样处理
3。你可以把客户端的socket连接保存到一个Arraylist,通讯的时候只要针对你要通讯的socket来发送数据
另,加强异常处理力度以上意见仅供参考,说起来容易呀:)
解决方案 »
- vs2012安装扩展提示:此包不包含扩展清单(zh-CN/Eula.rtf)中指定的软件协议
- C#怎么让字符串定长,不够的用空格补齐?
- FTP 上传文件报错
- 关于自定义控件资源回收的问题
- [WinForm]当数据源是List<>时,DataGridView的 AllowUserToAddRows 没用吗
- 散分了
- 文件上传问题,我用下面函数上传大文件(达到12M)会出错(显示 “找不到服务器,无法显示本页”),兄弟们救命啊。
- sos
- 重建datatable出错!!!帮帮忙:)
- 我的datagrid和一个dataview关联,当dataview filter后,我怎么根据datagrid.currtentindex来定位数据行呢?
- vb.net和v#开发数据库那个更合适
- 关于图片问题
[email protected]
我马上发过去》
已经发过去了,请查收。
这是怎么回事?
if(MyServer != null || mySocket != null) return;当连接不成功时,MyServer和mySocket以赋值,就直接return了。如果要保留该判断,可以在
private void ConnectCallback(IAsyncResult ar)中加多一个catch:catch(SocketException e)
{
if(e.ErrorCode ==10061)
{
MessageBox.Show("无法建立连接,请稍后再试! ");
MyServer = null;
mySocket = null;
}
}其他的还没有仔细看,我要睡了,明天再帮你仔细看看,你这个程序其实问题挺多的,回头整理一下在告诉你。
已经发过去了,请查收。
MSN:[email protected] //只能别人加我,我加不了别人
[email protected]
[email protected]
我在读你的代码中,楼主能否将你的问题再次详细的述说一偏
http://www.chinanetboy.com/code/index.asp?type=C%20Sharp
看这里的代码能否帮你什么忙
[email protected]
下午。我看了一下你的源代码,发现问题应当是因为你在Client端连接时使用的是异步通信,这样的后果就是不管服务器是否listen,客户端都会显示建立连接,而且客户端一直在试图连接服务器,出现单向通信的问题就不足为奇了。 所以在客户端连接服务器时,先使用connect连接一次,如果成功,再使用异步。
[email protected]
[email protected]
谢谢你的程序,最近不方便上网,刚下载你的程序,还未看, 谢谢!
[email protected]
我看看
[email protected]