C#实现Socket
C#实现Socket连接
服务端
建立Socket
AddressFamily.InterNetwork内网,SocketType.Stream以流来通信,Tcp为协议
电脑主机和端口和ip地址进行绑定
监听客户端连接
阻塞方法 生成Socket 接受客户端连接
声明数组,存放聊天的缓冲区。
使用while方法 , 接收数据并存放在数组中 实现多次接消息
还原接收信息为明文
实现客服给客户发消息
代码如下
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));}}}
}
客户端
- 建立Socket
- Connect连接服务端
- 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相关推荐
- linux常用c函数(中文版)
都是linux的c函数东西略多,用页面搜索来查找吧. << Back to man.ChinaUnix.net isalnum(测试字符是否为英文或数字) 相关函数 isalpha,isd ...
- 百度前200页部分答案(初稿)
1操作系统中 heap 和 stack 的区别 栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方.Java自动管理栈和堆,程序员不能直接地设置栈或堆. 在函数中定义的一些基本类 ...
- RPC 笔记(08)— socket 通信(多进程多线程服务器)
在上一节中如果并行的客户端连接数超过了默认开启进程的数量,那么后来的客户端请求将会阻塞,为了不阻塞新的客户端,我们可以将进程的单线程改成多线程即可. 服务端代码: import json impo ...
- RPC 笔记(07)— socket 通信(多进程服务器)
上节我们完成了一个简单的多线程服务器,可以并发处理多个客户端连接.但是 Python 由于全局解释器锁 GIL 的存在,致使多个线程只能占满一个 CPU 核心,多线程并不能充分利用多核的优势.所以多数 ...
- RPC 笔记(06)— socket 通信(多线程服务器)
1. 客户端代码 import json import time import struct import socketdef send_request(sock_obj, method, param ...
- RPC 笔记(05)— socket 通信(单线程服务器)
1. Python 标准库 1.1 socket 提供 RPC 服务的网络通信功能,方便用户编写 tcp/udp 相关的代码.两个不同机器的进程需要通信时,可以通过 socket 来传输数据. 客 ...
- 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. ...
- python 网络编程之Socket通信案例消息发送与接收
背景 网络编程是python编程中的一项基本技术.本文将实现一个简单的Socket通信案例消息发送与接收 正文 在python中的socket编程的大致流程图如上所示 我们来首先编写客户端的代码: # ...
- 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 ...
- C# Socket系列三 socket通信的封包和拆包
通过系列二 我们已经实现了socket的简单通信 接下来我们测试一下,在时间应用的场景下,我们会快速且大量的传输数据的情况! 1 class Program 2 { 3 static void Mai ...
最新文章
- 机器学习——模型测试与评估方法与指标
- 电热水器技术性能指标
- 企业品牌竞争力研究(二):提高企业品牌竞争力的要素(创新SPR理论)
- applet打包的MANIFEST.MF配置
- easypoi导出excel不设置样式_EasyExcel为单个Cell设置样式
- 淘淘商城 @Autowired 装配失败
- stm8s003程序跑飞_微信小程序只玩跳一跳?OUT啦!带你玩更好玩的微信小游戏!...
- SGU 185 Two shortest
- octave绘制图片Figure后无法关闭
- cut\grep\sort\tr
- 微博2021年营收22.6亿美元同比增34% 日活用户达2.49亿
- ibatis 用HashMap解决Ibatis未知列名和列数的查询结果的resultClass映射
- VISIO画图软件安装
- IDE、SCSI、SATA、USB、并口和串口
- 微信小程序--Todos案例
- 直连测速服务器异常,求证! 网件R7800, Speedtest测速的怪现象,200M宽带+R7800者进...
- 李时珍食物疗法150条 百年难遇的养生千古名方
- php网页 背景图片,HTML怎么设置网页背景图
- 样本方差为何除以n-1而不是n?
- python中 glob.glob
热门文章
- 思考项目 求1+2的2次方+3的3次方+4的4次方+5的5次方+6的6次方的值。(异种循环嵌套)
- easyui treegrid php,easyUI TreeGrid | 学步园
- 计算机常用的颜色模式有,ps的颜色模式有哪些
- 四象限法推导lm曲线_SEM数据分析四象限方法
- Spring学记笔记
- HTML+CSS期末大作业:动漫网站设计——悬崖上的金鱼姬(5页) / 动漫网页设计作业,网页设计作业 / 动漫网页设计成品 学生DW网页设计作业成品 web课程设计网页规划与设计...
- Navicat for mysql 在WIN10下导入SQL不成功解决办法
- 外贸邮箱服务器设置,外贸邮客户端设置方法?
- 安全狗核心产品入选《云原生产品目录》云原生安全实力备受认可!
- MYSQL命令大全自学笔记