كاتب الموضوع لتلقي البيانات من الملكية الفكرية وميناء

StackOverflow https://stackoverflow.com/questions/1805091

  •  05-07-2019
  •  | 
  •  

سؤال

وأود أن كتابة برنامج لتلقي بعض البيانات باستخدام tcpClient من الملكية الفكرية ورقم المنفذ المحدد. لأول مرة فعلت ذلك باستخدام بينما (صحيح). قال لي صديق لي لاستخدام موضوع بدلا من حين حلقة. هكذا فعلت كما قال.

public static void receiveThread()
{
    TcpClient tcpClient = new TcpClient();
    try
    {
        tcpClient.Connect(ipAddress, incPort);
        Console.WriteLine("Connection accepted ...");
    }
    catch (Exception e)
    {
        Console.WriteLine(e + "\nPress enter to exit...");
        Console.ReadKey();
        return;
    }
    NetworkStream stream = tcpClient.GetStream();
    StreamReader incStreamReader = new StreamReader(stream);

    try
    {
        data = incStreamReader.ReadLine();
        Console.WriteLine("Received data: {0}", data);
    }
    catch (Exception e)
    {
        Console.WriteLine(e + "\nPress enter to exit...");
    }
}

ويعمل بشكل جيد ولكن ليست جيدة كما أود أن تعمل. ايم عند تشغيل برنامجي وإرسال إليها لexaple "أهلا بالعالم" سلسلة، فإنه يحصل عليه ومن ثم الانتهاء من العمل وتخرج. أريد للحفاظ على موضوع فوق لمزيد من البيانات الواردة ولكن لا أعرف كيفية القيام بذلك. ربما شخص ما لديه أدنى فكرة عن لي كيف نفعل ذلك؟

لإرسال البيانات الدردشة باستخدام هذا

using System;
using System.Net;
using System.Net.Sockets;
using System.IO;

public class Program
{
public static string ipAddress = "127.0.0.1";
public static int listenerPort = 6600;
public static string message;

static void Main(string[] args)
{
    TcpListener tcpListener = new TcpListener(IPAddress.Parse(ipAddress),listenerPort);
    tcpListener.Start();

    Socket socket = tcpListener.AcceptSocket();
    Console.WriteLine("Connection accepted...");
    while (true)
    {
        if (socket.Connected)
        {
            NetworkStream networkStream = new NetworkStream(socket);
            StreamWriter streamWriter = new StreamWriter(networkStream);

            message = Console.ReadLine();
            streamWriter.WriteLine(message);
            streamWriter.Flush();
        }
    }
}
هل كانت مفيدة؟

المحلول

وإلقاء نظرة على هذا العقار من كائن TCPClient

http://msdn.microsoft كوم / EN-US / مكتبة / system.net.sockets.tcpclient.connected.aspx

ويمكنك استخدامه على هذا النحو

while(tcpClient.Connected)
{
    // do something while conn is open
}

نصائح أخرى

كان

وصديقك استخدام الخيط لذلك كان غير مؤمن التطبيق الرئيسي الخاص بك. والآن بعد أن قمت بإنشاء موضوع جديد يمكنك استخدام حلقة في حين أن موضوع داخل مثلك كانوا يفعلون سابقا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top