当前位置: 首页 > news >正文

C# Socket系列1

最近开始学习C#的Socket 记录一下。

最简单的服务端

 1   class Program
 2     {
 3         /*
 4          1、实例化Socket对象
 5          2、绑定端口和Ip(Bind)
 6          3、接听客户端连接(Listen)
 7          4、调用Accept取得客户端Socket
 8          5、Send 和 Receive 收发数据
 9          6、Close关闭Socket       
10              */
11         static void Main(string[] args)
12         {
13             Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
14             IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8888);
15             server.Bind(endPoint);
16             server.Listen(10);
17             server.BeginAccept(new AsyncCallback(AccepCallback), server);
18             Console.ReadKey();
19 
20         }
21 
22         private static void AccepCallback(IAsyncResult ar)
23         {
24             Socket server = (Socket)ar.AsyncState;
25             Socket client = server.EndAccept(ar);
26             Console.WriteLine("收到{0}连接", client.RemoteEndPoint.ToString());
27             byte[] data = Encoding.UTF8.GetBytes("客户端连接成功");
28             int len = data.Length;
29             client.Send(BitConverter.GetBytes(len));
30             client.Send(data);
31             server.BeginAccept(new AsyncCallback(AccepCallback), server);
32 
33         }
34     }
View Code

最简单的客户端

 1 class Program
 2     {
 3         static void Main(string[] args)
 4         {
 5             Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
 6             try
 7             {
 8                 client.Connect("127.0.0.1", 8888);
 9                 Console.WriteLine("连接成功");
10                 byte[] buffer = new byte[4];
11                 client.Receive(buffer);
12                 int len = BitConverter.ToInt32(buffer, 0);
13                 buffer = new byte[len];
14                 client.Receive(buffer);
15                 string msg = Encoding.UTF8.GetString(buffer);
16                 Console.WriteLine(msg);
17             }
18             catch (Exception e)
19             {
20 
21                 Console.WriteLine(e.Message);
22             }
23             Console.ReadKey();
24         }
25     }
View Code

 

转载于:https://www.cnblogs.com/PandaHome/p/9114149.html

相关文章:

  • 简历查看下载网站列表
  • Android的ListView中用上下文菜单
  • Django之Form组件
  • LVS负载均衡群集
  • 360前端星计划—深入CSS
  • linux signal 处理
  • 如何给域名配置https证书
  • 遍历DataTable
  • curl如何发送json数据?如何发送form数据?python的restfull又该如何获取这些数据?...
  • rails4 new没有生成prototype.js之类的脚本解决办法
  • CoolViewPager:即刻刷新,自定义边缘效果颜色,双向自动循环,内置垂直切换效果,想要的都在这里...
  • sqlplus
  • 住宅格局解剖图鉴
  • Hibernate中Session.get()/load()之区别
  • 整理OpenResty+Mysql+Tomcat+JFinal+Cannal+HUI
  • SegmentFault for Android 3.0 发布
  • “寒冬”下的金三银四跳槽季来了,帮你客观分析一下局面
  • 【Leetcode】104. 二叉树的最大深度
  • 0x05 Python数据分析,Anaconda八斩刀
  • CSS 提示工具(Tooltip)
  •  D - 粉碎叛乱F - 其他起义
  • ECS应用管理最佳实践
  • happypack两次报错的问题
  • HashMap ConcurrentHashMap
  • Javascript设计模式学习之Observer(观察者)模式
  • javascript数组去重/查找/插入/删除
  • java小心机(3)| 浅析finalize()
  • Js基础知识(一) - 变量
  • Selenium实战教程系列(二)---元素定位
  • Theano - 导数
  • 前端临床手札——文件上传
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 突破自己的技术思维
  • 一起来学SpringBoot | 第三篇:SpringBoot日志配置
  • 在 Chrome DevTools 中调试 JavaScript 入门
  • 【云吞铺子】性能抖动剖析(二)
  • 第二十章:异步和文件I/O.(二十三)
  • 格斗健身潮牌24KiCK获近千万Pre-A轮融资,用户留存高达9个月 ...
  • 函数计算新功能-----支持C#函数
  • ​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型
  • #include到底该写在哪
  • #传输# #传输数据判断#
  • (+4)2.2UML建模图
  • (12)Linux 常见的三种进程状态
  • (2022 CVPR) Unbiased Teacher v2
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (分类)KNN算法- 参数调优
  • (每日持续更新)jdk api之StringBufferInputStream基础、应用、实战
  • (免费分享)基于springboot,vue疗养中心管理系统
  • (十八)devops持续集成开发——使用docker安装部署jenkins流水线服务
  • (详细版)Vary: Scaling up the Vision Vocabulary for Large Vision-Language Models
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • (原创)boost.property_tree解析xml的帮助类以及中文解析问题的解决
  • (转)Mysql的优化设置
  • (转)淘淘商城系列——使用Spring来管理Redis单机版和集群版