小弟用C#做的Socket客户端,连接上服务器后,首先向服务器发一个设置命令,服务器收到设置命令后就根据客户的请求定时地向客户端返回信息。问题就是我的客户端用怎样的代码来接收服务器定时传回的数据。并且不能阻塞客户程序,因为客户端还要同时作其他工作。请教C#的Socke高手????
解决方案 »
- C# 里恢复数据库问题
- C#页面 翻页的问题
- OE的这种Panel中的布局的显示如何做?
- 字符串与日期型数据进行比较的问题
- C#书上的一道题
- 怎样在form1中的按钮按一下,会打开form2窗体并关掉form1窗体,按钮里的代码怎么写呢
- 如果想找一些开源程序,请问应该在哪里找?
- 请高手伸手解决WebBrowser超难问题,先给20,结贴时加100分
- 请问如何让DataSet中的一列数据在DataGridView显示时划分到几个不同的列中(根据另一列的数值)?
- 女程序员,想参加开源项目(北京地区)
- 如何把datagrid1 中的数据复制到datagrid2中?
- 请问高手用C#如何在服务器上开发电子邮箱(实现收、发功能),在线等待中......
{
Thread.Sleep(100);
if(ClientSocket.Available > 0)
{
byte[] headerbyte = new byte[ClientSocket.Available]
ClientSocket.Receive(headerbyte);
}
}
private NetworkStream ns = null;ns = TcpClient.GetStream();
br = new BinaryStream(ns);private void Listening()//线程
{
while (!exit)
{
byte[] buffer = new byte[1024];
try
{
buffer = br.ReadBytes(1024);
}
catch (System.IO.IOException)
{
}
}
}NetworkStream 要是全局的,由它生成的BinaryReader和BinaryWriter要在程序结束时才能Close
这样你就可以通过一个线程来接收服务器信息而向服务器发送信息则可以在不同的函数中
{
try
{
Socket receiver = Connect();
int byteRec = receiver.Receive(buffer); if (byteRec > 0)
{
.................//Connect Method
public Socket Connect()
{
try
{
if (handler == null)
{
handler = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
handler.Connect(RemoteEPServer);
}
return handler;
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
return null;
}
}
handler.Connect(RemoteEPServer);建立byte[]存放接受数据
用handler.receive 方法/send方法收发数据