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;
把他作为前台线程。