[英]disconnecting a client from server after receiving message in c# socket
我做了一个小的客户端程序,它将接收来自服务器的消息。 我想在收到消息后安全地断开客户端与服务器的连接。(另一种情况是,我想将接收到的值与另一个值进行比较,如果不匹配,客户端将被断开连接)代码是:
using System;
using System.Collections.Generic;
using System.Net;
using System.Net.Sockets;
using System.IO;
using System.Text;
class Program
{
static void Main(string[] args)
{
try
{
TcpClient tcpClient = new TcpClient("127.0.0.1", 1234);
NetworkStream ns = tcpClient.GetStream();
StreamReader sr = new StreamReader(ns);
StreamWriter sw = new StreamWriter(ns);
string data;
//receiving message
data = sr.ReadLine();
Console.WriteLine(data);
//I want to disconnect here
}
catch (Exception e)
{
Console.Write(e.Message);
}
Console.Read();
}
}
我还需要添加什么?
只需将TcpClient实例和NetworkStream的用法包装在using块中:
using(TcpClient tcpClient = new TcpClient("127.0.0.1", 1234))
using(NetworkStream ns = tcpClient.GetStream())
{
// Do read here
}
我会更像您的代码结构:
using (var tcpClient = new TcpClient("127.0.0.1", 1234))
{
using(var ns = tcpClient.GetStream())
{
StreamReader sr = new StreamReader(ns);
StreamWriter sw = new StreamWriter(ns);
string data;
//receiving message
data = sr.ReadLine();
if(data == somePreDeterminedValue)
{
Console.WriteLine(data);
}
}
}
这意味着当您点击右括号时,它将自动为您关闭TCPClient和NetworkStream并处置它们的实例。
在这种情况下,如果您从流中获取的值是正确的,那么它将不会断开连接,很简单。 我认为您需要提供总体上想要做的问题的完整答案,就像我要做的这个简单术语一样,但是在此示例中,无论如何,TCPClient都是关闭的。
在实际的应用程序中,您实际上希望保留在整个应用程序中打开和关闭的TCPClient字段,并且仅在处理消息传递对象时才进行处理。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.