如何在分散的令牌环中发送数据包?

时间:2013-04-29 15:24:30

标签: c# network-programming

我需要为我的课程工作实现完全分散的令牌环协议应用程序。 所以,这是:

  

每个启动的应用程序(节点)都有自己的ID,当前节点是上一个节点的服务器和环上下一个节点的客户端(因此,节点之间有2个并行的tcp连接)。用户输入当前节点的端口,其他服务器节点的IP地址和端口,数据包(令牌),节点的当前ID和目标ID

我不知道如何将收到的令牌发送到响铃中的下一个节点。我怎样才能实现2个tcp连接?我尝试为每个节点启动2个线程(1个用于服务器功能,1个用于客户端),但我认为这是错误的方式。

我还为«client»和«server»实现了2个功能。

服务器:

/*some code...*/
if (server.Pending()) {
    /*...some code*/
    NetworkStream stream = client.GetStream();
    int i = stream.Read(bytes, 0, bytes.Length);

    if (i > 0) {

        recv = /*some code*/
        Invoke(AddTextDelegateS, "Someone connected. Waiting for mine token...");
        answer = /*some code*/

        //extracting destination node ID
        int dest_new = /*some code*/
        dest_id = dest_new;

        if (current_id == dest_id) {
            // OK, token received right node
            Invoke(AddTextDelegateC, "Node with id " + current_id.ToString() + " recieved token with data:");
            Invoke(AddTextDelegateC, recv);

        } else {

            //in this part I'm trying to send <------------
            Thread tmp_thread = new Thread(startclient);
            tmp_thread.IsBackground = true;
            tmp_thread.Start();
            //

        }
        byte[] answer_bytes = /*some code */
        stream.Write(answer_bytes, 0, answer_bytes.Length);
        /*....*/

0 个答案:

没有答案
相关问题