Socket简介

通过TCP/IP与仪器或设备通讯,在C#语言中,我们通常采用Socket。本项目是一个简单的Socket建立服务监听与Socket作为客户端请求的一个示例。

项目结构

  • 客户端项目 SocketClient

    主要负责作为Socket客户端发起连接请求,并发送数据

  • 服务端项目 SocketDemo

    主要负责作为Socket服务端,监听端口并接收连接请求,并返回应答数据

项目演示

  • 先运行SocketDemo进行服务监听
            Console.WriteLine("Starting:Creating Socket object");Socket listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);listener.Bind(new IPEndPoint(IPAddress.Any, 2112));listener.Listen(10);while (true){Console.WriteLine("Waiting for connection on port 2112");Socket socket = listener.Accept();string receivedValue = string.Empty;while (true){byte[] receivedBytes = new byte[1024];int numBytes = socket.Receive(receivedBytes);Console.WriteLine("Receiving.");receivedValue += Encoding.ASCII.GetString(receivedBytes, 0, numBytes);if (receivedValue.IndexOf("[FINAL]") > -1){break;}}Console.WriteLine("Received value:{0}", receivedValue);string replyValue = "Message successfully received.";byte[] replyMessage = Encoding.ASCII.GetBytes(replyValue);socket.Send(replyMessage);socket.Shutdown(SocketShutdown.Both);socket.Close();}
  • 运行SocketClient进行模拟连接,并发送接收数据。
            byte[] receivedBytes = new byte[1024];IPHostEntry ipHost = Dns.Resolve("127.0.0.1");IPAddress ipAddress = ipHost.AddressList[0];IPEndPoint ipEndPoint = new IPEndPoint(ipAddress, 2112);Console.WriteLine("Starting:Creating Socket object");Socket sender = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);sender.Connect(ipEndPoint);Console.WriteLine("Successfully connected to {0}", sender.RemoteEndPoint);string sendingMessage = "Hello World Socket Test";Console.WriteLine("Creating Message;Hello World Socket Test");byte[] forwardMessage = Encoding.ASCII.GetBytes(sendingMessage + "[FINAL]");sender.Send(forwardMessage);int totalBytesReceived = sender.Receive(receivedBytes);Console.WriteLine("Message provided from server: {0}", Encoding.ASCII.GetString(receivedBytes, 0, totalBytesReceived));sender.Shutdown(SocketShutdown.Both);sender.Close();Thread.Sleep(1000);Console.ReadLine();

后记

H5支持WebSocket,预计将来在通讯领域应用会更加广泛,示例程序见博客:[C# WebSocket模拟发送接收](http://www.cnblogs.com/bmbh/p/5174884.html)

GitHub

BMBH/.NET-Demo

C# Socket模拟发送接收相关推荐

  1. 从缓冲上看阻塞与非阻塞socket在发送接收上的区别

    最近在网络上看到一些帖子以及回复,同时又搜索了一些网络上关于阻塞非阻塞区别的描述,发现很多人在描述两者的发送接收时操作返回以及缓冲区处理的区别时有不同程度的误解.所以我想写一篇文章来纠正错误,并作为记 ...

  2. 从缓冲上看阻塞与非阻塞socket在发送接收上的区别(转载)

    转自:http://blog.chinaunix.net/uid-24517549-id-4044877.html 首先socket在默认情况下是阻塞状态的,这就使得发送以及接收操作处于阻塞的状态,即 ...

  3. 安卓Socket连接实现连接实现发送接收数据,openwrt wifi转串口连接单片机实现控制...

    安卓Socket连接实现连接实现发送接收数据,openwrt wifi转串口连接单片机实现控制 socket 连接采用流的方式进行发送接收数据,采用thread线程的方式. 什么是线程?  详细代码介 ...

  4. ActionScript接收socket服务器发送来的数据

    原文地址:http://www.asp119.com/news/2009522181815_1.htm 从socket中接收数据的方法取决于你使用socket类型,Socket和XMLSocket都可 ...

  5. 单片机IO口模拟串口程序(发送+接收

    单片机IO口模拟串口程序(发送+接收)[转] qcmc 发表于 - 2011-6-23 0:42:00 前一阵一直在做单片机的程序,由于串口不够,需要用IO口来模拟出一个串口.经过若干曲折并参考了一些 ...

  6. tcp socket的发送与接收缓冲区

    1)应用程序可通过调用send(write, sendmsg等)利用tcp socket向网络发送应 用数据, 而tcp/ip协议栈 再通 过 网络设备接口把已经组 织成struct  sk_buff ...

  7. 串口发送程序linux,单片机IO口模拟串口程序(发送+接收

    前一阵一直在做单片机的程序,由于串口不够,需要用IO口来模拟出一个串口.经过若干曲折并参考了一些现有的资料,基本上完成了.现在将完整的测试程序,以及其中一些需要总结的部分贴出来. 程序硬件平台:11. ...

  8. STM32IO模拟串口接收发送(stm32f030)

    STM32 IO模拟串口接收发送 一.串口时序图 二.代码-发送部分 三.代码-接收部分 一.串口时序图 二.代码-发送部分 /************************************ ...

  9. Netty服务器部署在Android设备上,接收来自PC客户端的Java Socket客户端发送的JSON数据

    Netty服务器部署在Android设备上,接收来自PC客户端的Java Socket客户端发送的数据 一个简单的模型,在Android手机上部署一个Netty写的服务器,绑定端口9000,等待客户端 ...

最新文章

  1. 【踩坑记录】记一次MySQL主从复制延迟的坑
  2. FastDFS服务重启
  3. Elasticsearch入门hello world (macos)【二】java请求Elasticsearch
  4. python3学习第三周
  5. 西门子博图的FB块_西门子S7-300/400PLC OB-FB-FC-DB块介绍
  6. 动力强劲的星型发动机,为何不用在汽车上呢?
  7. 模板:后缀自动机(SAM)
  8. ug弹簧可变性装配_弹簧可配置魔术
  9. Python 的 requests 库的用法
  10. ov5640帧率配置_逃离塔科夫怎么提升帧率 帧率优化建议_单机游戏_游戏攻略
  11. Linux网络管理实 验 指 导
  12. java 参数类型不确定_java泛型的那些事
  13. linux usermod修改用户所在组方法
  14. 腾讯广告算法大赛 | 初赛第一名心得分享
  15. MATLAB数据标准化处理,mapminmax、zscore、mapstd对比
  16. hexframe软件(二进制查看文件)
  17. 人民银行支付系统(CNAPS)和中国银联下面的跨行支付系统是一回事儿吗
  18. Ubuntu 下网易云音乐出现“加载失败,网络错误,可以在设置中发送反馈”问题及解决
  19. [杂记]注册电气工程师考试复习及考试杂谈
  20. 软考高级 真题 2017年上半年 信息系统项目管理师 案例分析

热门文章

  1. MSE 均方误差及其梯度
  2. Java学习笔记--Java中必记常见异常
  3. 【帝国CMS插件】支持7.5 7.2 移动同步生成插件 帝国多端访问必备插件带详细安装教程
  4. docker的基本用法
  5. hcfax2e伺服驱动器说明书_松下伺服驱动器说明书.pdf
  6. 微机原理与接口技术 学习笔记(五) 8255(可编程并行接口芯片) 与 8253(可编程定时/计数器)
  7. 谷歌 发布android 8,谷歌推出了Android 8.1 预计在12月发布正式版
  8. iOS开发:MVVM的使用分析
  9. Python程序设计实验——3.检测手机号真实性
  10. 台式电脑前置面板的耳机插孔没声音