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-->