首页 > 其他分享 >Socket通信

Socket通信

时间:2022-12-06 11:35:08浏览次数:36  
标签:Console 服务器端 通信 tcpServer new Socket 客户端

Socket类似插口,用于连接客户端和服务器端

客户端:

// 创建socket
Socket tcpServer = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//构造IP地址
IPAddress ipaddress = new IPAddress(new byte[] {172,16,160,50});
//ip+port 终端
IPEndPoint iPEndPoint = new IPEndPoint(ipaddress, 1122);

tcpServer.Bind(iPEndPoint); //绑定
tcpServer.Listen(100); //设置最大的连接数
Console.WriteLine("可以通信了。。。。");
Socket client = tcpServer.Accept();//开始监听,返回一个socket接口
Console.WriteLine("一个客户端连接过来了。。。。");

服务器端:

Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//构造IP地址
IPAddress ipaddress = new IPAddress(new byte[] { 172, 16, 160, 50 });
//ip+port 终端
IPEndPoint iPEndPoint = new IPEndPoint(ipaddress, 1122);

clientSocket.Connect(iPEndPoint);//连接
Console.WriteLine("连接上服务器端了");

客户端发送到服务器端:(客户端:send,服务器端:receive)

发送数据:

string message = "今天是星期一";
clientSocket.Send(Encoding.UTF8.GetBytes(message));
Console.WriteLine("我已经发送完消息了!");

 接收数据:

byte[] date = new byte[1024];
int length = client.Receive(date);

string message = Encoding.UTF8.GetString(date);
Console.WriteLine("我接收到的数据为:"+message);

关闭连接(先打开的后关闭):

client.Close();tcpServer.Close();

clientSocket.Close();

服务器端发送到客户端:(服务器端:send,客户端:receive)

TCP协议的通信:首先只能连接一个客户端,服务端使用线程连接多个客户端,否则Accept()方法会阻塞。客户端连接后设置两个线程,一个线程用于消息的发送,一个用于消息的接收。(发送和接收是可以随时进行)。客户端也是一样。

标签:Console,服务器端,通信,tcpServer,new,Socket,客户端
From: https://www.cnblogs.com/Joyce-mi7/p/16952848.html

相关文章

  • 【论文导读】- Communication-Efficient Learning of Deep Networks from Decentraliz
    文章目录​​论文信息​​​​摘要​​​​主要内容(contributions)​​​​FederatedAveraging​​​​联邦学习​​​​隐私​​​​联邦优化​​​​联邦平均算法(FedAVG)​......
  • Java网络编程---基于TCP协议实现客户端服务端通信
    首先,对于TCP协议,我们要明确:TCP:传输控制协议TCP会尽自己所能,尽量将数据发送给对方;但并不能保证100%可以发送给对方TCP会在数据发送不到对方的情况下,会给应用......
  • websocket
    转自小林coding使用HTTP不断轮询其实问题的痛点在于,怎么样才能在用户不做任何操作的情况下,网页能收到消息并发生变更。最常见的解决方案是,网页的前端代码里不断定时发......
  • AMS和Zygote通信为什么采用socket而不是Binder
    参考:为什么SystemServer进程与Zygote进程通讯采用Socket而不是Binder1、AMS、WMS等系统服务处于SystemServer进程中2、SystemServer(SystemService)与ServiceManager勿混......
  • 网络通信中的粘包问题
    什么是粘包?在网络传输层有TCP和UDP两种协议;如果使用TCP进行通信,则在大多数场景下是不存在丢包和包乱序问题的,因为TCP通信是可靠的通信方式,TCP栈通过序列号和包重传确认机......
  • 使用NodeMcu(ESP-12E)的串口通信淘晶驰串口屏
    目录1.背景2.准备工作-硬件准备-软件准备3.程序编写-串口屏-NodeMcu总结1.背景没有原因,我开心。2.准备工作-硬件准备NODEMCU(NodeMcu官网)选用的IO......
  • 使用socketserver实现文件下载
    服务端server.pyimportosimportjsonimportstructimportsocketserverclassMyServer(socketserver.BaseRequestHandler):#重写handle消息的方法def......
  • 【博学谷学习记录】超强总结,用心分享|Java基础分享-进程间通信方式
    目录1.管道2.消息队列3.共享内存4.信号量5.信号6.Socket 1.管道如果你学过Linux命令,那你肯定很熟悉「|」这个竖线。$ ps auxf | grep mysql上面命令行......
  • 前端和后台建立websocket长连接,并添加心跳检测
    Nginx代理服务器默认1分钟会导致websocket长连接端口,所以服务端与客户端需要添加心跳检测1.前端代码Vuedata(){return{showDeviceDialog:true,......
  • STM32 can通信的坑
    STM32can通信的坑(1)单独使用CAN2时一定要同时打开CAN1和CAN2的时钟,否则CAN2无法正常工作,因为CAN2是从CAN,CAN1是主CAN(2)CAN1:0->13组,CAN2:14->28组。CAN1的过滤器是0~13,C......