C#一个按钮打开与关闭TCPclient

publicForm1(){InitializeComponent();TcpClienttcpClient=newTcpClient();privatevoidbutt... public Form1()
{
InitializeComponent();
TcpClient tcpClient = new TcpClient();
private void button1_Click(object sender, EventArgs e)

{
string ip = textBox1.Text;
int port = Convert.ToInt32(textBox2.Text);
if (button1.Text == "Connect")
{

tcpClient.Connect(ip, port); }
if (tcpClient.Connected)
{
label2.Visible = true;
label2.ForeColor = Color.Green;
label2.Text = "连接到192.168.0.1 ... 成功!!!";
}

button1.Text = "DisConnect";
}
else
{
tcpClient.Close();
Tag = 0;
label2.ForeColor = Color.Red;
label2.Text = "断开网络连接!!!";
button1.Text = "Connect";
}

}
private void button3_Click(object sender, EventArgs e)
{
// TcpClient tcpClient = new TcpClient();

if (tcpClient.Connected)
{
NetworkStream clientStream = tcpClient.GetStream();

单程序只能运行 一次 ,第2此打开连接时报错 : 不能访问已经释放的对象 。
我的 TcpClient 放在公共区 , 因为我下面还有个按钮 SEND 读写数据 ,
如果把 TCP 实例化写在Buttion1中 打开关闭是 没有问题的 ,
但 Send按钮的 NetworkSteam 就又报错 , 上下文中没有 Tcp/ 请高手解答 ???
第一个按钮 :Connect 按一下后它连接,并字符变成 DisConnect ,再按一下断开连接。 第3次按该按钮时计划应该是连接,但现在就是连接不上 ,调试得到的原因是: TcpClient tcpClient = new TcpClient(); 是写在Form1下面的,不是写在Connect Buttion 事件下面 ,如果写在 Connect Buttion 事件下面 的话 ,连接和断开是没问题的 。 但就是 Send 按钮里面 不能使用 NetworkStream clientStream = tcpClient.GetStream(); 。 因此很矛盾 。
展开
 我来答
不申言舌_
推荐于2016-07-12
知道答主
回答量:19
采纳率:0%
帮助的人:9.8万
展开全部
你这种情况可以参考这样子定义TcpClient
private static TcpClient _tcpClient;

public static TcpClient TcpClient
{
get {
if (_tcpClient == null)
return new TcpClient();
else
return _tcpClient;
}
}
追问

这样修改 已经实现 , 但不知道为什么 ?

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式