请教C#的Socke高手?? C#做的Socket客户端如何用已连接的Socke接收服务器定时传回的信息????不能阻塞客户端。

peterlanhaijun 2006-04-28 04:07:48
小弟用C#做的Socket客户端,连接上服务器后,首先向服务器发一个设置命令,服务器收到设置命令后就根据客户的请求定时地向客户端返回信息。

问题就是我的客户端用怎样的代码来接收服务器定时传回的数据。并且不能阻塞客户程序,因为客户端还要同时作其他工作。

请教C#的Socke高手????
...全文
309 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
任亚军 2006-04-28
  • 打赏
  • 举报
回复
步骤: 定义IP

handler = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);


handler.Connect(RemoteEPServer);

建立byte[]存放接受数据
用handler.receive 方法/send方法收发数据
zjk96321 2006-04-28
  • 打赏
  • 举报
回复
启个线程,用一个固定的端口来接收服务端的数据,如果还有其它任务可以用另外一个端口来发送数据。
wangsaokui 2006-04-28
  • 打赏
  • 举报
回复
while (true)
{
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;
}
}
Matthewzhong 2006-04-28
  • 打赏
  • 举报
回复
private BinaryReader br = null;
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
这样你就可以通过一个线程来接收服务器信息而向服务器发送信息则可以在不同的函数中
joe_lu_1985 2006-04-28
  • 打赏
  • 举报
回复
数据查询,修改之类的工作也用同一个socket?
peterlanhaijun 2006-04-28
  • 打赏
  • 举报
回复
再顶
peterlanhaijun 2006-04-28
  • 打赏
  • 举报
回复
同时客户端还在进行其他的如数据查询,修改之类的工作。

peterlanhaijun 2006-04-28
  • 打赏
  • 举报
回复
我考虑的也是新建一个线程来接收。

While(true)
{
Thread.Sleep(100);
if(ClientSocket.Available > 0)
{
byte[] headerbyte = new byte[ClientSocket.Available]
ClientSocket.Receive(headerbyte);
}
}
joe_lu_1985 2006-04-28
  • 打赏
  • 举报
回复
其他工作是什么?
Matthewzhong 2006-04-28
  • 打赏
  • 举报
回复
启动一个线程来读取

110,545

社区成员

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

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

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