服务端

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; using System.Net.Sockets; using System.Threading;

namespace SocketDemo {

class Program     {         static Socket serverSocket;         static Socket clientSocket;         static Thread thread;         static void Main(string[] args)         {             //将网络端点表示为IP地址和端口 用于socket侦听时绑定             IPEndPoint ipep = new IPEndPoint(IPAddress.Any, 3001);             //使用指定的地址族、套接字类型和协议初始化socket类的新实例             serverSocket = new Socket(ipep.AddressFamily, SocketType.Stream, ProtocolType.Tcp);             //将所创建的Socket与IPEndPoint绑定             serverSocket.Bind(ipep);             //设置套接字为收听模式 定队列中最多可容纳的等待接受的传入链接数为10             serverSocket.Listen(10);             //在Socket上接收接入的连接             while (true)             {                 //serverSocket.Accept()接收客户端Socket的连接请求 当程序运行到serverSocket.Accept()时会等待直到有客户端Socket发起连接请求时 获取客户端Socket

clientSocket = serverSocket.Accept();                 thread = new Thread(new ThreadStart(Program.doWork));                 thread.Start();             }             Console.Read();         }         private static void doWork()         {

Socket clinet = clientSocket;             //客户端信息             IPEndPoint ipEndPoint = (IPEndPoint)clinet.RemoteEndPoint;             String address = ipEndPoint.Address.ToString();             String port = ipEndPoint.Port.ToString();             Console.WriteLine(address + ":" + port + " 连接过来了");             while (true)             {                 Byte[] inBuffer = new Byte[clinet.ReceiveBufferSize];                 Byte[] outBuffer=new Byte[1024];                 String inBufferStr;                 String outBufferStr;                 try                 {                     //如果接收的消息为空 阻塞 当前循环                     clinet.Receive(inBuffer, clinet.ReceiveBufferSize, SocketFlags.None);                 }                 catch(SocketException)                 {                     clinet.Close();                     return;                 }                 inBufferStr = Encoding.ASCII.GetString(inBuffer);                 Console.WriteLine(address + ":" + port + "说:");                 Console.WriteLine(inBufferStr.Trim());

outBufferStr = Console.ReadLine().Trim();

outBuffer = Encoding.ASCII.GetBytes(outBufferStr);                 clinet.Send(outBuffer, outBuffer.Length, SocketFlags.None);                             }

}     } }

客户端

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net.Sockets; using System.Net;

namespace clientSocket {     class Program     {         static Socket clientSocket;         static void Main(string[] args)         {             try             {                 //将网络端点表示为IP地址和端口,用于socket侦听时绑定                 IPEndPoint ipep = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 3001);                 clientSocket = new Socket(ipep.AddressFamily, SocketType.Stream, ProtocolType.Tcp);                 //将socket连接到服务器                 clientSocket.Connect(ipep);                 String outBufferStr;                 Byte[] outBuffer = new Byte[1024];                 Byte[] inBuffer = new Byte[1024];                 //发送消息                 outBufferStr = Console.ReadLine().Trim();                 outBuffer = Encoding.ASCII.GetBytes(outBufferStr);                 clientSocket.Send(outBuffer, outBuffer.Length, SocketFlags.None);                 Console.WriteLine("服务器响应:");                 //接收服务器端信息                 clientSocket.Receive(inBuffer, 1024, SocketFlags.None);                 Console.WriteLine(Encoding.ASCII.GetString(inBuffer));                 Console.ReadLine();             }             catch(Exception exp)             {                 Console.WriteLine(exp.Message);                 Console.ReadLine();             }         }     } }

socket小实例的更多相关文章

  1. Python_爬虫小实例

    爬虫小实例 一.问题描述与分析 Q:查询某一只股票,在百度搜索页面的结果的个数以及搜索结果的变化. 分析: 搜索结果个数如下图: 搜索结果的变化:通过观察可以看到,每个一段时间搜索结果的个数是有所变化 ...

  2. (8)Linux(客户端)和Windows(服务端)下socket通信实例

    Linux(客户端)和Windows(服务端)下socket通信实例: (1)首先是Windows做客户端,Linux做服务端的程序 Windows   Client端 #include <st ...

  3. winform 异步读取数据 小实例

    这几天对突然对委托事件,异步编程产生了兴趣,大量阅读前辈们的代码后自己总结了一下. 主要是实现 DataTable的导入导出,当然可以模拟从数据库读取大量数据,这可能需要一定的时间,然后 再把数据导入 ...

  4. CSS应用内容补充及小实例

    一.clear 清除浮动 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...

  5. Objective-C之代理设计模式小实例

    *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...

  6. Objective-C之@类别小实例

    *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...

  7. OC小实例关于init方法不小心的错误

    *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...

  8. canva实践小实例 —— 马赛克效果

    前面给大家带来了操作像素的API,此时此刻,我觉得应该配以小实例来进行进一步的说明和演示,以便给大家带来更宽广的视野和灵感,你们看了我的那么多的文章,应该是懂我的风格,废话不多说,进入正题: 这次给大 ...

  9. canvas实践小实例二 —— 扇形

    俗话说:发图不留种,菊花万人捅!我这里想延伸一下:教学不给例,说你是傻逼!哎呀,还挺押韵,嘻嘻,开个玩笑! 我们都讲了四期API的知识了,估计大家看的也是枯燥的很啊,前面的小实例也是太简单,简直不解渴 ...

随机推荐

  1. mysql5.7启动slave报错 ERROR 1872 (HY000): Slave failed to initialize relay log info structure from the repository

    原因:检查my.cnf,原来没指定relay_log,mysql默认产生的relay_log名被该server上的另一个mysql slave占用了. 解决方法:1.在my.cnf中添加 relay_ ...

  2. Python的模块调用

    目前运维的Python脚本,是用于同步数据的,分别有n个不同的脚本同步不同的数据,而不同的脚本连接的数据库是一致的,每个脚本都重复写这个数据库连接信息. 这导致测试时,从生产环境切换到测试环境时,需多 ...

  3. Permission denied (publickey). fatal: The remote end hung up unexpectedly 解决办法

    这两天学习git的时候,在本地创建了一个库,同时自己在GitHub上面也创建了一个库,照着廖老师的教程一步一步走到了push的环节突然出现了这样的错误: [zhangxiyu@localhost le ...

  4. [转][SQL] SSIS 简单应用 数据库汇入导出设定& SQL Agent定期排程

    前言 本篇不是要說高深的SSIS 技巧,而是用實例的方式,說明如何應用 Visual Studio 的「Business Intelligence Projects」來建立「Integration S ...

  5. gvim配置到命令行可以使用

    下载安装gvim后,把gvim的安装目录添加到环境变量.

  6. ioss使用xcode常用快捷键

    // command+r 运行 //command+.停止 // command+shift+y 弹出打印区 // command+z 回退 //command+shift+z 前进 // comma ...

  7. 纯css3实现的圆形旋转分享按钮

    之前已经为大家介绍了好几款css3按钮,今天要为大家介绍的是一款纯css3实现的圆形旋转分享按钮.旋转的角度可以自己调整.在demo中演示了三个角度旋转.360度,60度,-360度.如图: 在线预览 ...

  8. mysql按年度、季度、月度、周、日统计查询的sql语句

    本文介绍一些mysql中用于查询的sql语句,包括按年度.季度.月度.周.日统计查询等,有需要的朋友,可以参考下. 一.年度查询 查询 本年度的数据   SELECT * FROM blog_arti ...

  9. windows系统IIS服务安装

    打开控制面板,win8可以使用快捷键win键+X打开列表   打开程序和功能   打开左上角启用或关闭windows功能   打开internet信息服务下拉单   按照下列图中进行对应项勾选 第一个 ...

  10. NYOJ-451-光棍节的快乐

    光棍节的快乐 时间限制:1000 ms  |  内存限制:65535 KB 难度: 描写叙述 光棍们,今天是光棍节.聪明的NS想到了一个活动来丰富这个光棍节. 规则例如以下: 每一个光棍在一个纸条上写 ...