日期:2014-05-18  浏览次数:20830 次

C# TCP 发送与接收 遇到难题了!请高手解答
手头的项目是跟光控机发送指令,光控机有tcp协议,我需要实现的是我在服务器端向光控机发送1,光控机回复2,服务器再发送3,{如果服务器接收不到2,那么就一直发送1,直到接收到2,再发送3}

上面大括号中的是我目前遇到的难题,希望高手给予知道。使用 C# socket TCp



------解决方案--------------------
探讨
手头的项目是跟光控机发送指令,光控机有tcp协议,我需要实现的是我在服务器端向光控机发送1,光控机回复2,服务器再发送3,{如果服务器接收不到2,那么就一直发送1,直到接收到2,再发送3}

上面大括号中的是我目前遇到的难题,希望高手给予知道。使用 C# socket TCp

------解决方案--------------------
这里边没有什么难题。发送和接受数据流只是tcpclient编程中简单的两条指令而已(算上之前的初始化也不过4、5条指令)。关键是不要把“哪一个是服务器”给搞反了。
------解决方案--------------------
在服务器端发送的时候加入一个超时或者在接受的时候加入一个异常来处理收到非2的情况
------解决方案--------------------
逻辑楼主不是写好了嘛。直接写是的。

------解决方案--------------------
C# code
Socket skt = ......;

byte[] sbuf = { 1 };
byte[] rbuf = new byte[1];
while (true)
{
    try
    {
        skt.Send(sbuf);
        skt.Receive(rbuf);
        if (rbuf[0] == 2)
        {
            break;
        }
    }
    catch (Exception)
    {
    }
}

// 开始发送 3

------解决方案--------------------
你这已经是最简单的逻辑了,服务端就一直读取,搞个线程,非阻塞模式,只要读到得不是2,就发送1