详解C#中Socket通信(一):实现连接

第一步:实现连接

客户端连接代码:

private void connect2Server()

{

Socket clientSocket;

//服务器地址

IPAddress ip = IPAddress.Parse("192.168.1.136");

//服务器节点 IPEndPoint iep = new IPEndPoint(ip, 9004);

//通信实例 clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

//连接 clientSocket.Connect(iep);

}

客户端通过Socket连接到服务器的9004端口。

服务器接受连接代码:

public void StartListening()

{

//获取本机IP地址

Socket serverSocket; IPHostEntry ipHost = Dns.GetHostEntry(Dns.GetHostName()); HostIP = ipHost.AddressList[0];

//开关控制

bool flag=true; try {     IPEndPoint iep = new IPEndPoint(HostIP, 9004);

serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);     serverSocket.Bind(iep);

//最大100个     serverSocket.Listen(100);                 //如果有客户端连接进来,就加入队列                    while (flag)     {                             //阻塞侦听是否有客户端连接

clientSocket = serverSocket.Accept();         if (clientSocket != null)         {                                     string str = clientSocket.RemoteEndPoint.ToString();             string[] Ipstr = str.Split(‘:‘);

string clientIp = Ipstr[0];

MessageBox("客户端:"+clientIp+"连接到服务器");

}

} } catch (Exception e) {

MessageBox.show("连接错误:"+e.message); }

}

服务器启动Socket,侦听是否有客户端进入,如果有的话,加入队列。通常情况下,为了使客户端和服务器对其它事件进行响应,把它们放置在独立线程进行。类似下面的代码:

Thread _createServer;

_createServer = new Thread(new ThreadStart(StartListening)); _createServer.IsBackground = true; _createServer.Start();

详解C#中Socket通信(一):实现连接

时间: 2024-08-29 11:09:24

详解C#中Socket通信(一):实现连接的相关文章

(转)详解Linux中SSH远程访问控制

详解Linux中SSH远程访问控制 原文:http://blog.51cto.com/dengqi/1260038 SSH:是一种安全通道协议,主要用来实现字符界面的远程登录,远程复制等功能(使用TCP的22号端口).SSH协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令. 在RHEL 5系统中使用的是OpenSSH服务器由openssh,openssh-server等软件包提供的(默认已经安装),并以将sshd添加为标准的系统服务. SSH提供一下两种方式的登录验证:

详解Android中那些酷炫返回方式的实现

Android手机都会有返回键,不管是实体键,还是虚拟键.Android用户主要也都是通过这个返回键操控页面返回方式的,不比IOS逼格甚高的只保留一个操作键.这种方式是最普遍的返回方式,还有一种也是比较常见的,那就是页面内部自己响应.绝大多数APP每个页面的设计图顶部左侧都会有一个返回键图标,偶尔也有奇葩的设计放在底部左侧,点击这个图标即finish掉当前页面.简单的介绍完了最常见的两种方式,下面为大家介绍两种更友好的交互方式. 拿大家比较常用的三款社交软件的交互来说.腾讯微博的返回方式除去上述

CSS学习笔记(9)--详解CSS中:nth-child的用法

详解CSS中:nth-child的用法 前端的哥们想必都接触过css中一个神奇的玩意,可以轻松选取你想要的标签并给与修改添加样式,是不是很给力,它就是":nth-child". 下面我将用几个典型的实例来给大家讲解:nth-child的实际用途: Tips:还用低版本的IE浏览器的哥们请绕过! :nth-child(2)选取第几个标签,"2可以是你想要的数字" .demo01 li:nth-child(2){background:#090} :nth-child(n

详解HTTP中get和post的区别

1.详解HTTP中GET和POST的区别 http://www.jellythink.com/archives/806 2.HTTP 方法:GET 对比 POST http://www.cnblogs.com/liu-ke/p/4198815.html

详解mysql中的Using与On的用法

多用才可以体会各个关键字的用法啊... 原文来自[http://bbs.php100.com/read-htm-tid-148469.html] 在用Join进行多表联合查询时,我们通常使用On来建立两个表的关系.其实还有一个更方便的关键字,那就是Using.那么这两个关键字在使用上有啥区别呢?往下看.假设有如下两张表:    mysql> select * from pets; +---------+---------+--------+-----------+ | pets_id | ani

详解Webwork中Action 调用的方法

详解Webwork中Action 调用的方法 从三方面介绍webwork action调用相关知识: 1.Webwork 获取和包装 web 参数 2.这部分框架类关系 3.DefaultActionProxyFactory.DefaultActionProxy.DefaultActionInvocation 终于要开始 webwork 核心业务类的总结,webwork 通过对客户端传递的 web 参数重新包装,进行执行业务 Action 类,并反馈执行结果,本篇源码分析对应下图 WebWork

实例详解 EJB 中的六大事务传播属性--转

前言 事务 (Transaction) 是访问并可能更新数据库中各种数据项的一个程序执行单元 (unit).在关系数据库中,一个事务可以是一条或一组 SQL 语句,甚至整个程序.它有通常被称为 ACID 的原子性(Atomicity).一致性(Consistency).隔离性(Isolation).持续性(Durability)四大特性: 原子性(Atomicity):一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做. 一致性(Consistency):事务必须是使数据库

一张图详解Linux中的top命令

一张图详解Linux中的top命令及每个参数的含义:

图文详解Unity3D中Material的Tiling和Offset是怎么回事

图文详解Unity3D中Material的Tiling和Offset是怎么回事 Tiling和Offset概述 Tiling表示UV坐标的缩放倍数,Offset表示UV坐标的起始位置. 这样说当然是隔靴搔痒. 下面用*.3ds文件作为模型,介绍Tiling和Offset到底是怎么回事. 3DS格式解析 比如我有这样一个tank_player.3ds模型.右侧的'select'处的图片就是贴图. *.3ds文件最基本的内容包括顶点列表Vertices.贴图坐标列表UVs.面列表Faces.其中Ve