using System.Collections.Generic; using System.Collections.ObjectModel; using System.Drawing; using System.IO; using System.Linq; using System.Linq.Expressions; using System.Net; using System.Net.Sockets; using System.Runtime.InteropServices; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows; using System.Windows.Forms; using System.Windows.Threading; using System.Xml.Linq; namespace KeenRay.SocketCommu public class SocketCommuInit : BindableBase #region 属性集 //服务端 public Socket Client public int _receiveFlagValue = 0; /// /// 接收标志值 /// public int ReceiveFlagValue get { return _receiveFlagValue; } set { SetProperty(ref _receiveFlagValue, value); } #endregion #region 字段集 //单例:视频监控 SurveillanceVideo globalSurveillanceVideo = SurveillanceVideo.CreateInstance(); //服务器 Socket Server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); //监听多个Client Dictionary clientList = new Dictionary(); string strSocketIP = null; //端口号 int point = 40000; int iRecBuffeActualByteCount = -1;//缓存区接收到的的字节数 #endregion #region 单例 private volatile static SocketCommuInit _instance = null; private static readonly object lockobj = new object(); /// /// 创建实例 /// /// public static SocketCommuInit CreateInstance() if (_instance == null) lock (lockobj) if (_instance == null) _instance = new SocketCommuInit(); return _instance; #endregion #region IP配置 /// /// IP、断开配置 /// public void IPandPortConfig() string strSocketConfigFilePath; strSocketConfigFilePath = Environment.CurrentDirectory + "\\Config" + "\\SocketAndBullHeadConfig.xml"; XDocument SocketDocument = XDocument.Load(strSocketConfigFilePath); XElement SocketRoot = SocketDocument.Root; //Socket节点 XElement SocketPoint = SocketRoot.Element("Socket"); XElement SocketIP = SocketPoint.Element("SocketIP"); strSocketIP = SocketIP.Value; XElement SocketPort = SocketPoint.Element("SocketPort"); point = Convert.ToInt32(SocketPort.Value); catch(Exception ex) LogHelper.Error("SocketClass.cs::IPandPortConfig() IP/端口配置发生错误:--------------" + ex.ToString()); #endregion #region 启动Socket /// /// 启动 /// public void StartFlag() //启动Socket string strSocketStartFlag = null; string strSocketConfigFilePath; strSocketConfigFilePath = Environment.CurrentDirectory + "\\Config" + "\\SocketAndBullHeadConfig.xml"; XDocument SocketDocument = XDocument.Load(strSocketConfigFilePath); XElement SocketRoot = SocketDocument.Root; //Socket节点 XElement SocketPoint = SocketRoot.Element("Socket"); //启动Socket XElement SocketStart = SocketPoint.Element("SocketStart"); strSocketStartFlag = SocketStart.Value; //strSocketStartFlag = "1"; if (strSocketStartFlag == "1") IPAddress IP = IPAddress.Parse(strSocketIP); IPEndPoint iPEndPoint = new IPEndPoint(IP, point); Server.Bind(iPEndPoint); Server.Listen(10); //开启线程监听 Thread th = new Thread(ListenFunc); th.IsBackground = true; th.Start(Server); #endregion #region 监听 /// /// 监听 /// /// public void ListenFunc(object Server) while (true) //客户端 Client = ((Socket)Server).Accept(); //clientList.Add(Client.RemoteEndPoint.ToString(), Client); //可以监听多个Client Thread threadServer = new Thread(new ParameterizedThreadStart(Receive)); threadServer.IsBackground = true; threadServer.Start(Client); catch (Exception ex) LogHelper.Error("SocketClass.cs::Listen()监听发错了错误:--------------" + ex.ToString()); #endregion 本文实例讲述了php中 Socket 创建与 监听 实现 方法 。分享给大家供大家参考。具体如下: 这里提供了在php中 socket 相关函数的一个实例,如创建 Socket ,接受一个 socket 连接 ,写入一个 Socket 及初始化连接等操作,具体实例代码如下: 复制代码 代码如下:$ip=”127.0.0.1″;          //定义ip地址 $port=1000;           //定义端口 $ socket = socket _create(af_inet,sock_stream,sol_tcp);  //创建 socket $bind= socket _bind($ socket ,$ip,$prot 需求:因为项目由十多个子程序 成,通过 socket 互相链接访问。 但是日常 发测试中有一半系统不是必须的,全部启动嘛,机子又太卡。但不启动嘛,主程序连不上他们时,又老是在报错。 所以搞了一个虚假的服务器。这个IllusiveServer只需要 监听 指定端口并建立连接,就什么都不做了,大大减少我机子压力。 整个由4个函数 成,非常简单,可以作为 C# Socket 监听 的入门例子学习。 1、本次主要介绍MainWindow窗口实例化,将MainWindow窗口实例化作为一个参数传输给另外一个窗体,以便给另外一个窗体使用。其保证了每个窗体只有一份实例化的数据。具有应用在,窗体与窗体间控件、数据的访问。关于每个窗体只进行一次实例化,得到一份数据,保证了数据的唯一性问题,将在后面给出阐述。 2、关于 “调用 线程 必须为STA,因为许多UI 件都需要” 问题、 UI更新问题... C# 线程 学习(一) 多 线程 的相关概念 什么是进程?当一个程序 始运行时,它就是一个进程,进程包括运行中的程序和程序所使用到的内存和系统资源。而一个进程又是由多个 线程 成的。什么是 线程 线程 是程序中的一个执行流,每个 线程 都有自己的专有寄存器(栈指针、程序计数器等),但代码区是共享的,即不同的 线程 可以执行同样的函数。什么是多 线程 ?多 线程 是指程序中包含多个执行流,即在一个程序中可以同时运行多个不同... 在 C# 语言中使用 线程 时首先要创建 线程 ,在使用 Thre ad类的构造 方法 创建其实例时,需要用到 Thre adS tar t委托或者Parameterized Thre adS tar t委托创建 Thre ad类的实例 Thre adS tar t委托只能用于无返回值、无参数的 方法 ,Parameterized Thre adS tar t委托则可以用于带参数的 方法 <!--more--> 创建过程 使用 Thre adS tar t创建 线程 首先需要创建 Thre adS tar t委托的实例,然后再创建Thr public class One { public static void main(String[] args) { PrintTime printTime = new PrintTime(); printTime.s tar t(); printTime.s tar t(); c# 线程 问题: 线程 间操作无效:从不是创建控件的 线程 访问它InvalidOperationException异常2008年07月16日星期三15:09摘自http://hi.baidu.com/zzticzh/blog/item/ee4e89020a89a6094bfb518e.html在有些情况下,您可能需要通过 线程 调用控件的 方法 。例如,您可能要在窗体上调用一个禁用按钮或更新... 在 C# 语言中使用Parameterized Thre adS tar t创建进程,首先需要创建Parameterized Thre adS tar t委托的实例,然后再创建 Thre ad类的实例 <span style="color:#333333">Parameterized Thre adS tar t pts=new Parameterized Thre adS tar t( 方法 名 ); Thre ad t=new Thre ad(pts);</span> <!--more-->