C#实现Socket连接

服务端

  1. 建立Socket

    AddressFamily.InterNetwork内网,SocketType.Stream以流来通信,Tcp为协议

  2. 电脑主机和端口和ip地址进行绑定

  3. 监听客户端连接

  4. 阻塞方法 生成Socket 接受客户端连接

  5. 声明数组,存放聊天的缓冲区。

  6. 使用while方法 , 接收数据并存放在数组中 实现多次接消息

  7. 还原接收信息为明文

  8. 实现客服给客户发消息

代码如下

using System;
using System.Net;
using System.Net.Sockets;
using System.Text;namespace SocketDemo
{class Program{static void Main(string[] args){//创建Socket 相当于是通信的主机//监听打进来的电话,并转接给客服Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//绑定ip和端口EndPoint iped = IPEndPoint.Parse("192.168.43.227:1234");serverSocket.Bind(iped);//监听有没有电话连接,顺便规划客服人数,如果是0就是无限个客服serverSocket.Listen(100);//接电话//分配客服和客户进行一对一通信//阻塞方法 没有电话打进来,那么代码就执行到这里 AcceptSocket kefuScoket = serverSocket.Accept();System.Console.WriteLine("客户的本地端口是:" + kefuScoket.LocalEndPoint.ToString());System.Console.WriteLine("打电话进来的客户端是:" + kefuScoket.RemoteEndPoint.ToString());//接消息,需要一个消息的缓冲区byte[] readBuff = new byte[1024];while (true){//消息拿到,并存放在缓冲区,并记住消息的长度int receiveCount = kefuScoket.Receive(readBuff);string receiveMessage = Encoding.UTF8.GetString(readBuff, 0, receiveCount);System.Console.WriteLine("客户端发过来的消息:" + receiveMessage);//string backMessage = "我是你的专属客服,有什么可以帮助你的";kefuScoket.Send(Encoding.UTF8.GetBytes("服务器已经接到你发来的消息:" + receiveMessage));}}}
}

客户端

  1. 建立Socket
  2. Connect连接服务端
  3. try catch语句 捕捉异常
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;namespace clientSocket
{class Program{static void Main(string[] args){Console.WriteLine("Hello World!");Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//接收服务器的回馈byte[] readBuff = new byte[1024];//连接服务器clientSocket.Connect("192.168.43.227", 1234);//连接上服务器,就能发消息string sendMessage;//计数器int num = 0;while (true){if (num == 0){sendMessage = "你好,我是192用户";num++;}else{sendMessage = Console.ReadLine();}//转码,转成0101010的格式byte[] sendBytes = Encoding.UTF8.GetBytes(sendMessage);//把二进制的消息发出去clientSocket.Send(sendBytes);int count = clientSocket.Receive(readBuff);System.Console.WriteLine("服务器发送的消息是:" + Encoding.UTF8.GetString(readBuff, 0, count));}}}
}

C#实现Socket相关推荐

  1. linux常用c函数(中文版)

    都是linux的c函数东西略多,用页面搜索来查找吧. << Back to man.ChinaUnix.net isalnum(测试字符是否为英文或数字) 相关函数 isalpha,isd ...

  2. 百度前200页部分答案(初稿)

    1操作系统中 heap 和 stack 的区别 栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方.Java自动管理栈和堆,程序员不能直接地设置栈或堆. 在函数中定义的一些基本类 ...

  3. RPC 笔记(08)— socket 通信(多进程多线程服务器)

    在上一节中如果并行的客户端连接数超过了默认开启进程的数量,那么后来的客户端请求将会阻塞,为了不阻塞新的客户端,我们可以将进程的单线程改成多线程即可. ​ 服务端代码: import json impo ...

  4. RPC 笔记(07)— socket 通信(多进程服务器)

    上节我们完成了一个简单的多线程服务器,可以并发处理多个客户端连接.但是 Python 由于全局解释器锁 GIL 的存在,致使多个线程只能占满一个 CPU 核心,多线程并不能充分利用多核的优势.所以多数 ...

  5. RPC 笔记(06)— socket 通信(多线程服务器)

    1. 客户端代码 import json import time import struct import socketdef send_request(sock_obj, method, param ...

  6. RPC 笔记(05)— socket 通信(单线程服务器)

    1. Python 标准库 1.1 socket 提供 RPC 服务的网络通信功能,方便用户编写 tcp/udp 相关的代码.两个不同机器的进程需要通信时,可以通过 socket 来传输数据. ​ 客 ...

  7. Docker使用遇到问题Got permission denied while trying to connect to the Docker daemon socket解决方案

    Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker. ...

  8. python 网络编程之Socket通信案例消息发送与接收

    背景 网络编程是python编程中的一项基本技术.本文将实现一个简单的Socket通信案例消息发送与接收 正文 在python中的socket编程的大致流程图如上所示 我们来首先编写客户端的代码: # ...

  9. Can 't connect to local MySQL server through socket '/tmp/mysql.sock '(2)

    安装了mysql, 使用命令mysql -u root -p 弹出Can 't connect to local MySQL server through socket '/tmp/mysql.soc ...

  10. C# Socket系列三 socket通信的封包和拆包

    通过系列二 我们已经实现了socket的简单通信 接下来我们测试一下,在时间应用的场景下,我们会快速且大量的传输数据的情况! 1 class Program 2 { 3 static void Mai ...

最新文章

  1. 机器学习——模型测试与评估方法与指标
  2. 电热水器技术性能指标
  3. 企业品牌竞争力研究(二):提高企业品牌竞争力的要素(创新SPR理论)
  4. applet打包的MANIFEST.MF配置
  5. easypoi导出excel不设置样式_EasyExcel为单个Cell设置样式
  6. 淘淘商城 @Autowired 装配失败
  7. stm8s003程序跑飞_微信小程序只玩跳一跳?OUT啦!带你玩更好玩的微信小游戏!...
  8. SGU 185 Two shortest
  9. octave绘制图片Figure后无法关闭
  10. cut\grep\sort\tr
  11. 微博2021年营收22.6亿美元同比增34% 日活用户达2.49亿
  12. ibatis 用HashMap解决Ibatis未知列名和列数的查询结果的resultClass映射
  13. VISIO画图软件安装
  14. IDE、SCSI、SATA、USB、并口和串口
  15. 微信小程序--Todos案例
  16. 直连测速服务器异常,求证! 网件R7800, Speedtest测速的怪现象,200M宽带+R7800者进...
  17. 李时珍食物疗法150条 百年难遇的养生千古名方
  18. php网页 背景图片,HTML怎么设置网页背景图
  19. 样本方差为何除以n-1而不是n?
  20. python中 glob.glob

热门文章

  1. 思考项目 求1+2的2次方+3的3次方+4的4次方+5的5次方+6的6次方的值。(异种循环嵌套)
  2. easyui treegrid php,easyUI TreeGrid | 学步园
  3. 计算机常用的颜色模式有,ps的颜色模式有哪些
  4. 四象限法推导lm曲线_SEM数据分析四象限方法
  5. Spring学记笔记
  6. HTML+CSS期末大作业:动漫网站设计——悬崖上的金鱼姬(5页) / 动漫网页设计作业,网页设计作业 / 动漫网页设计成品 学生DW网页设计作业成品 web课程设计网页规划与设计...
  7. Navicat for mysql 在WIN10下导入SQL不成功解决办法
  8. 外贸邮箱服务器设置,外贸邮客户端设置方法?
  9. 安全狗核心产品入选《云原生产品目录》云原生安全实力备受认可!
  10. MYSQL命令大全自学笔记