为啥我的tcp服务端只能接受一次消息呢?

bcc222 2011-03-25 09:28:30


private void StartListen()
{
try
{
tcpListener = new TcpListener(1234);
tcpListener.Start();
AddText("开始监听");
this.listen = true;

while (true)
{
Socket s = tcpListener.AcceptSocket();//设置缓冲区
Byte[] bff = new Byte[100];
int i = s.Receive(bff);
string msg = System.Text.Encoding.UTF8.GetString(bff);//转换解码
if (msg!=null)
{
AddText(msg);
}
}

}
catch (System.Exception ex)
{

AddText("监听错误");

}

}


启动部分:

listenThread = new Thread(new ThreadStart(StartListen));
// listenThread.IsBackground = true;
listenThread.Start();

我用tcp调试助手来进行测试的,现在的问题是,可以连接,但是连接后,第一发送数据可以发过去,再发数据就发送不过去了,如果跟踪的话程序就停到 int i = s.Receive(bff);地方了

客户端如果断开,再连接的话,还能连接上,也能发送一个消息,但是发完以后再次发送又收不到数据了。


我使用tcp调试助手来做客户端测试的

这是咋回事?谢谢各位
...全文
282 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
bcc222 2011-03-25
  • 打赏
  • 举报
回复
这个是 清华大学出版社:Visual C# .net范例入门与提高,289页的例子,我都想,这个有没有测试过就放到书上了,真服气了!
脾气不坏 2011-03-25
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 lilin8905 的回复:]

把这段代码放在while循环外面 Socket s = tcpListener.AcceptSocket();//设置缓冲区
[/Quote]
+1

你这么写 每次客户端要重新连接 才能再次发送数据
lilin8905 2011-03-25
  • 打赏
  • 举报
回复
把这段代码放在while循环外面 Socket s = tcpListener.AcceptSocket();//设置缓冲区

110,567

社区成员

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

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

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