c# socket编程。。。 监听端口..???

做了个C/S结构的小程序,我把客户端为连接函数,和接收函数,接收函数如下:stringrecvStr="";try{byte[]recvBytes=newbyte[102... 做了个C/S结构的小程序,我把客户端为连接函数,和接收函数,接收函数如下:

string recvStr = "";
try
{
byte[] recvBytes = new byte[1024];
int bytes;
bytes = c.Receive(recvBytes, recvBytes.Length, 0);//从服务器端接受返回信息
recvStr += Encoding.Default.GetString(recvBytes, 0, bytes);

return recvStr;
}
catch (Exception e)
{ }
c.Close();
return recvStr;

}
这样的话只能接收一次数据, 我想知道有什么方法可以一直接收服务器的消息?
如果给这一句加一个while(true) 把这个函数放在窗口load中,那么这个窗口就不能打开了,请问有什么解决办法??
展开
 我来答
274318037
2011-11-21
知道答主
回答量:9
采纳率:0%
帮助的人:6.8万
展开全部
你做一个线程 加while(true)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
1535835796
推荐于2016-11-10 · 超过30用户采纳过TA的回答
知道答主
回答量:90
采纳率:0%
帮助的人:80.8万
展开全部
多线程,
示例:
using System.Threading;

private Socket socket;
//启动线程(可以放在接受按钮事件中);
thread1 = new Thread(new ThreadStart(Revice));
thread2.Start();
//接受信息方法

private string recvStr = "";
private void Revice()
{
while (true)
{
try
{
if (socket.Available != 0)
{
byte[] buffer = new byte[1024];
int length = socket.Receive(buffer);
recvStr =Encoding.Default.GetString(buffer, 0, length);
}
}
}
catch (Exception)
{
}
finally { }
}
}
追问
在我关闭服务器的时候,客户端还是会收到一些列的/0/0/0/0... 字符串,这个应该怎么处理? 或者怎么判断客户端和服务器已经断开?
追答
试试判断,
if(Encoding.Default.GetString(buffer, 0, length)==null)
{
break:
}
不行的话,在服务器窗体关闭的时候FormClosing事件,中关闭socket;
代码,socket.Close();
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
haoxfan2
2011-11-21 · TA获得超过7702个赞
知道大有可为答主
回答量:3548
采纳率:37%
帮助的人:1445万
展开全部
SOCKET建立的基本概念还不清楚,建议去看书。在服务器和客户两端,有对等的关系。
追问
我第一次用socket,确实不清楚,只是现在急着实现。。
追答
上网找范例,认真研究一下。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百川海纳万象包罗
2011-11-21 · TA获得超过129个赞
知道小有建树答主
回答量:106
采纳率:0%
帮助的人:116万
展开全部
用线程加循环
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式