日期:2014-05-18  浏览次数:20857 次

C# 控制台程序 网络通信 求助!
本人刚接触C#,写了一个网络连接的程序(控制台),但发现程序运行后,屏幕一闪就没有了,不知道是怎么回事,还请高人指点,谢谢。
程序如下:目前只写出这些,是服务器端
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.Threading;

namespace TongEx053101
{
  class Program
  {
  static void Main(string[] args)
  {
  InterNet internet=new InterNet();
  internet.connect();

  }
  }
  class InterNet
  {
  public static Socket sokWatch;
  public Thread threadWatch;
  public void connect()
  {
  //实例化 套接字 (ip4寻址协议,流式传输,TCP协议)
  sokWatch = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
  IPAddress address = IPAddress.Parse("127.0.0.1");//创建 ip对象
  IPEndPoint endpoint = new IPEndPoint(address, 6000);
  sokWatch.Bind(endpoint);
  sokWatch.Listen(10);
  threadWatch = new Thread(StartWatch);
  threadWatch.IsBackground = true;
  threadWatch.Start();
  Console.WriteLine("启动服务器成功...");
  }
  /// <summary>
  /// 被调用线程 监听链接端口
  /// </summary>
  private void StartWatch()
  {
  while (true)
  {
  //监听 客户端 连接请求,但是,Accept会阻断当前线程
  Socket sokMsg = sokWatch.Accept(); //监听到请求,立即创建负责与该客户端套接字通信的套接字
  // ConnectionClient connection = new ConnectionClient(sokMsg);
  //dictConn.Add(sokMsg.RemoteEndPoint.ToString(), connection);
  }
  }
  }
}


------解决方案--------------------
threadWatch.IsBackground = true;
该线程成为后台线程,如果程序前台线程都终止后,后台线程即使在运行中也会被终止,然后程序关闭,改成
threadWatch.IsBackground = false;
把他作为前台线程。