Socket连接丢失后重新连接问题

Arucueid 2005-10-28 09:52:03
我做的客户端,下面是连接程序段
<code>
SocketClient.Shutdown(SocketShutdown.Both);
SocketClient.Close();
Thread.Sleep(100);

while(!SocketClient.Connected)
{
try
{
SocketClient.Connect(remoteEP);
}
catch(Exception exc)
{
Log.WriteEntry("Connect to Server Error:" + exc.Message, EventLogEntryType.Error, 2);
}
Thread.Sleep(30 * 1000); //30s
}
</code>
问题是,如果网络断开后重连的话会提示错误,怎么也连不上,怎么解决,谢谢了
...全文
408 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
Arucueid 2005-11-03
  • 打赏
  • 举报
回复
up
Arucueid 2005-11-02
  • 打赏
  • 举报
回复
up
yuchimiao 2005-11-01
  • 打赏
  • 举报
回复
up
Arucueid 2005-10-28
  • 打赏
  • 举报
回复
线程没运行的问题知道了,打印的时候确实是没运行
下面是连接程序
如果有注释的话可以连接
如果去掉注释的话显示是连接了,但是我在另外的片断里调用Socket.Connected总是FALSE
帮忙看看怎么改,谢谢
public void Connect2Server()
{
IPAddress ipAddress = IPAddress.Parse(szSvrIPAddr);
EndPoint remoteEP = new IPEndPoint(ipAddress, SvrPort);
/*
Socket SocketClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

if (SocketClient.Connected)
{
SocketClient.Shutdown(SocketShutdown.Both);
SocketClient.Close();
Thread.Sleep(100);
}
*/

while(!SocketClient.Connected)
{
try
{
SocketClient.Connect(remoteEP);
}
catch(Exception exc)
{
Log.WriteEntry("Connect to Server Error:" + exc.Message, EventLogEntryType.Error, 2);
}
Thread.Sleep(30 * 1000); //30s
}
}
JadyWang 2005-10-28
  • 打赏
  • 举报
回复
把完整的代码贴一下吧
Arucueid 2005-10-28
  • 打赏
  • 举报
回复
我加了关闭了
现在又有问题了
我在运行程序,线程好像起不来了
ThreadNetpoll = new Thread(new ThreadStart(TaskSendNetpoll));
ThreadNetpoll.IsBackground = true;
try
{
ThreadNetpoll.Start();
}
catch(Exception exc)
{
MessageBox.Show(exc.Message, "错误");
this.Close();
}

MessageBox.Show(ThreadNetpoll.ThreadState.ToString());

显示居然是backgroud, unstart
我开始都运行了的
JadyWang 2005-10-28
  • 打赏
  • 举报
回复
呵呵,那就强制关闭以后再创建socket啊。
SocketClient。Close();
Socket SocketClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
Arucueid 2005-10-28
  • 打赏
  • 举报
回复
现在的错误是
Connect to Server Error:在一个已经连接的套接字上做了一个连接请求。
昨天测试是什么对象之类的,忘了
JadyWang 2005-10-28
  • 打赏
  • 举报
回复
当网络断开时,在你的catch中
Socket SocketClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
试试看
Arucueid 2005-10-28
  • 打赏
  • 举报
回复
就是把这行代码加进去,每次连接都声明一下?
Socket SocketClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
Arucueid 2005-10-28
  • 打赏
  • 举报
回复
重新声明吗
能不能不重新声明啊
JadyWang 2005-10-28
  • 打赏
  • 举报
回复
断开的话重新socket()一个套接字
Arucueid 2005-10-28
  • 打赏
  • 举报
回复
up
Arucueid 2005-10-28
  • 打赏
  • 举报
回复
up下

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧