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中,那么这个窗口就不能打开了,请问有什么解决办法?? 展开
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中,那么这个窗口就不能打开了,请问有什么解决办法?? 展开
展开全部
你做一个线程 加while(true)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
多线程,
示例:
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 { }
}
}
示例:
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();
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
SOCKET建立的基本概念还不清楚,建议去看书。在服务器和客户两端,有对等的关系。
追问
我第一次用socket,确实不清楚,只是现在急着实现。。
追答
上网找范例,认真研究一下。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用线程加循环
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询