C#socket异步服务器发送后接收数据 长连接

privatestaticvoidRecVing(IAsyncResultResult){//通过result获取socket。在这个socket上你启动了BeginAc... private static void RecVing(IAsyncResult Result)
{
//通过 result 获取socket。在这个socket上你启动了BeginAccept操作
Socket socket = Result.AsyncState as Socket;
Socket Res_soc = null; //这个是与当前客户端连接的Socket
try
{
// 通过EndAccept,获取与当前客户端连接的Socket
Res_soc = socket.EndAccept(Result);
Console.WriteLine("连接成功!");
//创建包头缓冲区
byte[] bytes = new byte[80];
//接收包头 将接收到的信息放入缓冲区内
Res_soc.Receive(bytes);
//处理接收数据包包头信息的函数
byte[] byteData = business.GetMsgHeadSt(bytes, Res_soc);
//返回客户端信息
Send(byteData, Res_soc);
}
catch
{
// 发生异常时,释放Res_soc
if (Res_soc != null) Res_soc = null;
}
finally //利用finally 确保无论发生什么异常都能够让socket继续接收连接
{
//继续异步等待连接
socket.BeginAccept(new AsyncCallback(RecVing), socket);
}
}
服务器端通过异步收发数据包,我发送出去后在接收的数据包和第一次收到的数据包一样,是什么原因?
RecVing方法执行完是不是socket就断开了?怎么样执行长连接,一个socket连接去发送和接收数据呢?
展开
 我来答
daode1212
2014-04-01 · 超过53用户采纳过TA的回答
知道小有建树答主
回答量:176
采纳率:0%
帮助的人:143万
展开全部
我刚刚做了个winSock与采集器的通讯和继电器板卡的通讯,皆成功.注意点:IP地址,端口,协议这三样要准确,发送有二种方式:字符串,二进制串,接收也要对应的.有的通讯卡,返回中包含发送的内容是正常的,也有的板卡无返回的.
更多追问追答
追问
我是想问的在不断开socket连接怎么继续接收客户端传过来的数据
追答
在连接状态下发送与接收数据,你是要在不发送数据也要接收数据,这应该关注server---client的概念,以client定时地发送给server端.
焦疏然0w
2014-04-02 · 超过18用户采纳过TA的回答
知道答主
回答量:48
采纳率:0%
帮助的人:30.9万
展开全部
长连接要将Res_soc设为类的成员,不销毁类 socket就不会断开,你这个地方执行了recving方法之后Res-soc就销毁了,连接就断了,下次连得时候还是执行的这些语句,所有两次收发数据是一样的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-04-01
展开全部
网络问题应该时刻
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式