C#中的套接字发送和接收(while循环)

时间:2017-05-28 10:58:50

标签: c# sockets line send

这是我的代码。我正在编写一个简单的Socket测试。

    using System;
using System.Net;
using System.Net.Sockets;
using System.Runtime.InteropServices;
using System.IO;
using System.Text;
using Microsoft.Win32;

namespace HelloWorld
{
    class Program
    {
        public static void Main(string[] args)
        {

            Console.WriteLine("Connexion au serveur 62.210.130.212");
            using (client = new TcpClient("62.210.130.212", 35025))
            using (NetworkStream networkStream = client.GetStream())
            {
                byte[] usernameBytes = Encoding.ASCII.GetBytes(username);
                networkStream.Write(usernameBytes, 0, usernameBytes.Length);
            }

            while (true)
            {
                Byte[] data = new Byte[256];
                Int32 bytes = networkStream.Read(data, 0, data.Length);
                String responseData = System.Text.Encoding.ASCII.GetString(data, 0, bytes);
                Console.WriteLine("recieved: " + responseData);
            }
        }
    }
}

现在的问题是我无法在我的代码中使用networkStram,因为它已在使用选项卡的末尾删除。

有人可以帮我解决这个问题吗,我是C#的新手,这在Java中是不存在的。

谢谢!   于连。

1 个答案:

答案 0 :(得分:0)

你只需要扩展使用你所使用的对象的所有用法 - 这是有道理的,如果你只看一下这个词:卷曲括号内的所有代码都是使用括号内的对象。所以这至少应该解决这个具体问题:

using System;
using System.Net;
using System.Net.Sockets;
using System.Runtime.InteropServices;
using System.IO;
using System.Text;
using Microsoft.Win32;

namespace HelloWorld
{
    class Program
    {
        public static void Main(string[] args)
        {

            Console.WriteLine("Connexion au serveur 62.210.130.212");
            using (client = new TcpClient("62.210.130.212", 35025))
            using (NetworkStream networkStream = client.GetStream())
            {
                byte[] usernameBytes = Encoding.ASCII.GetBytes(username);
                networkStream.Write(usernameBytes, 0, usernameBytes.Length);

                while (true)
                {
                    Byte[] data = new Byte[256];
                    Int32 bytes = networkStream.Read(data, 0, data.Length);
                    String responseData = System.Text.Encoding.ASCII.GetString(data, 0, bytes);
                    Console.WriteLine("recieved: " + responseData);
                }
            }
        }
    }
}