精华内容
下载资源
问答
  • websocket网页客户端通信

    千次阅读 2019-03-13 11:23:38
    由于工作的一些原因要使用不通过请求来...websoket利用本地电脑的端口来使网页和桌面程序通信,桌面程序设置为服务端,网页设置为客户端。 下载插件:https://download.csdn.net/download/qq_35319925/10231896 ...

    由于工作的一些原因要使用不通过请求来使网页和桌面程序之间相互发送消息,想来想去还是用websocket之前也百度过一些其他的方法但发现有限制系统问题就给抛弃了。

    websoket利用本地电脑的端口来使网页和桌面程序通信,桌面程序设置为服务端,网页设置为客户端。

    下载插件:https://download.csdn.net/download/qq_35319925/10231896

                   List<IWebSocketConnection> allSockets;
                   WebSocketServer server;    
                   //创建服务器
                    FleckLog.Level = LogLevel.Debug;
                    allSockets = new List<IWebSocketConnection>();
                    
                    server = new WebSocketServer("ws://0.0.0.0:7182");//设置ip和端口号(端口号是本地电脑的端口号通讯时其他电脑不能参与通信)
                    server.Start(socket =>
                    {
                        socket.OnOpen = () =>
                        {
                            allSockets.Add(socket);//打开通讯
                        };
                        socket.OnClose = () =>
                        {
                            allSockets.Remove(socket);//关闭通讯
                        };
                        socket.OnMessage = message =>
                        {
                            allSockets.ToList().ForEach(ss => ss.Send(message));//接收的消息
                        };
                    });
    
                    //发送消息
                         var input = "hello world";
                foreach (var socket in allSockets.ToList())
                {
                   socket.Send(input);
                   
                }

    创建客户端程序

     <script type="text/javascript">
            var start = function () {
                var inc = document.getElementById('incomming');
                var wsImpl = window.WebSocket || window.MozWebSocket;
                var form = document.getElementById('sendForm');
                var input = document.getElementById('sendText');
    
                inc.innerHTML += "connecting to server ..<br/>";
    
                // create a new websocket and connect  localhost
                window.ws = new wsImpl('ws://localhost:7182/');//ip、端口号和服务端一致
    
                // when data is comming from the server, this metod is called
                ws.onmessage = function (evt) {
                    inc.innerHTML += evt.data + '<br/>';//接收服务器消息
                };
                // when the connection is established, this method is called
                ws.onopen = function () {
                    inc.innerHTML += '.. connection open<br/>';//打开通讯
                };
                // when the connection is closed, this method is called
                ws.onclose = function () 
                {
                    inc.innerHTML += '.. connection closed<br/>';//关闭通讯
                }
    
                form.addEventListener('submit', function (e) {  //.. connection closed
                    e.preventDefault();
                    var val = input.value;
                    ws.send(val);//客户端向服务端发送消息
                    input.value = "";
                    document.getElementById("i").src = "";
                });
            }
            window.onload = start;
        </script>
    
     <form id="sendForm">
            <input id="sendText" placeholder="Text to send" />
           <img src="" id="i" />
        </form>
        <pre id="incomming"></pre>

     

    展开全文
  • 本人开发的在用的UDTv4服务端和客户端通讯源码。本代码涉及较广,socket WEB网页请求、本地读取QQ号信息、本地读取网卡信息、数据存入本地文本(当数据库使用)、获取本地时间等
  • 电信设备-网页客户端之间进行通讯的方法及装置.zip
  • 客户端打开CEF网页时,要将客户端用户信息,直播间基本信息发送给网页网页收到后,处理这些信息。 方法就是,监听CEF Load事件,在LoadEnd时,马上调用JS函数,给CEF传递信息 1)向CEF网页传递...

    前面的交互,着重点在于原理,过于繁琐,本文在于应用。

    一  客户端加载网页时,给网页传递信息

         很常见的场景,客户端嵌套CEF,

         当客户端打开CEF网页时, 要将客户端用户信息,直播间基本信息发送给网页,

         网页收到后,处理这些信息。

       方法就是,监听CEF Load事件,在LoadEnd时,马上调用JS函数,给CEF传递信息

      1)向CEF网页传递 客户端信息

    	cef_control_->AttachLoadEnd([this](int code){
    
    
    		Json::Value values;
    		values["enterInfo"] =g_enterClassJsonJinfo ;
    
    		//调用JS, 传递json数据
    		cef_control_->CallJSFunction(L"CefJsFunc_EnterInfo", nbase::UTF8ToUTF16(values.toStyledString()), ToWeakCallback([this](const std::string& json_result) {
    
    
    			//JS retrun 的 json 信息
    			Json::Value values;
    			Json::Reader reader;
    			if (reader.parse(json_result, values))
    			{
    				std::wstring message = nbase::UTF8ToUTF16(values["message"].a
    展开全文
  • 1、下载WebScoket 服务器类库Fleck.dll 与客户端类库websocket-sharp.dll : https://pan.baidu.com/s/1o9jU22e 2、WebSocket 服务器代码: 1 List<IWebSocketConnection> allSockets; 2 public void ...

    1、下载WebScoket 服务器类库Fleck.dll 与客户端类库websocket-sharp.dll :  https://pan.baidu.com/s/1o9jU22e

    2、WebSocket 服务器代码:

     1   List<IWebSocketConnection> allSockets;
     2         public void Func()
     3         {
     4             try
     5             {
     6                 FleckLog.Level = LogLevel.Debug;
     7                 allSockets = new List<IWebSocketConnection>();
     8 
     9                 var server = new WebSocketServer("ws://0.0.0.0:9999");
    10 
    11                 server.Start(socket =>
    12                 {
    13                     socket.OnOpen = () =>
    14                     {
    15                         allSockets.Add(socket);
    16                     };
    17 
    18                     socket.OnClose = () =>
    19                     {
    20 
    21                         allSockets.Remove(socket);
    22                     };
    23 
    24                     socket.OnMessage = message =>
    25                     {
    26                         //显示接收的客户端信息
    27                         txt_receive.Text += message + "\r\n";
    28 
    29                         //发送信息给客户端
    30                        allSockets.ToList().ForEach(s => s.Send("test"));
    31 
    32                     };
    33                 });
    34             }
    35 
    36             catch (Exception e)
    37             {
    38                 MessageBox.Show("服务器开启失败!\r\n" + e.ToString());
    39 
    40             }
    41 
    42         }

    3、WebSocket 客户端代码:

     1  WebSocket ws;
     2  bool isConnected;
     3         
     4         public void Connect()
     5         {
     6             try
     7             {
     8                 if (isConnected == false)
     9                 {
    10                     ws = new WebSocket("ws://localhost:9999");
    11                     ws.OnOpen += ws_OnOpen;
    12                     ws.OnMessage += ws_OnMessage;
    13                     ws.OnClose += ws_OnClose;
    14                     ws.Connect();
    15                 }
    16             }
    17             catch (Exception ex)
    18             {
    19             }
    20         }
    21 
    22         void ws_OnOpen(object sender, EventArgs e)
    23         {
    24             SetTextBoxText(textBox1, "已连接服务器" + "\r\n");
    25             isConnected = true;
    26 
    27         }
    28         void ws_OnClose(object sender, CloseEventArgs e)
    29         {
    30             SetTextBoxText(textBox1, "服务器已断开" + "\r\n");
    31             isConnected = false;
    32         }
    33 
    34         void ws_OnMessage(object sender, MessageEventArgs e)
    35         {
    36             try
    37             {
    38                 string message = e.Data;
    39 
    40                 //显示接收的服务器信息
    41                 SetTextBoxText(textBox1, message);
    42 
    43                 //给服务器发送信息
    44                 ws.Send("Hello World!");
    45 
    46 
    47             }
    48 
    49             catch (Exception ex)
    50             {
    51             }
    52         }
    53 
    54 
    55 
    56         public delegate void DelSetTextBoxText(TextBox txtBox, string str);
    57         public void SetTextBoxText(TextBox txtBox, string str)
    58         {
    59             if (txtBox.InvokeRequired)
    60             {
    61                 DelSetTextBoxText del = new DelSetTextBoxText(SetTextBoxText);
    62                 this.Invoke(del, new object[] { txtBox, str });
    63             }
    64             else
    65             {
    66                 txtBox.Text += str + "\r\n";
    67             }
    68         }

     

     

    转载于:https://www.cnblogs.com/zhubaoming/p/8491804.html

    展开全文
  • SignalR winform 实现在同一个服务端和网页通讯
  • 基于SuperStock开发的网页端C#版实时通讯源代码,已编译通过可直接使用,配合网页端即可,部署服务器需要增加端口并且允许防火墙通过,源码开放可自行拓展
  • 背景:现要用写一个多客户端软件,软件需要录入很多数据到数据库,也需要从数据库获取很多数据展示个用户,需要展示的数据可达到十万级,当然可以分页动态加载。目前是在局域网内使用。思路:如果直接在客户端软件里...

    背景:现要用写一个多客户端软件,软件需要录入很多数据到数据库,也需要从数据库获取很多数据展示个用户,需要展示的数据可达到十万级,当然可以分页动态加载。目前是在局域网内使用。
    思路:如果直接在客户端软件里直接CRUD,按客户量连接池是没问题的,但是一旦软件被反编译了,数据库就暴露了。所以想用(客户端--服务端--数据库)的模式,但是小白(纯自学)以前没做过这类软件。
    请问:1.客户端与服务端应该用什么通讯方式最好?(请考虑大量表数据的背景,以前都直接用DataTable直接绑到DataGridView)
                        2.如果要适用外网,又应该用什么通讯方式?
                        3.服务端应该怎样验证身份和权限?
                        4.数据序列化是用JSON或者XML还是有其他方式?
                        5.能否给个Demo?网上的文章地址也可以。奶奶的,我自己一搜,全是Socket聊天程序。
                        6.服务端最好是用.NET的,当然如果有其他明显适合的也可以。

    1.我的话,会使用webapi来做服务端,既然你是分页加载,实际显示的数据其实并不多,太多数据其实用户体验也不好
    2.买个云服务器,webapi部署上去即可
    3.token校验,内部可存储用户id,权限信息
    4.我一般用json格式
    5.webapi创建网上一大把

    服务器 分2个方式。

    如果主动请求就 http 协议建立服务器,服务器可以直连数据库部署在服务器,客户端懒加载分页。如果不考虑实时可以用 Redis 做同步

    如果是推送,可以考虑 MQTT 或 websokect 均可以。

    数据传输格式推荐 json ,喜欢xml 也可以。

    至于授权可以按照楼上说的,简历一个自己的授权规则,然后每次把 token 带过去。

    1.客户端与服务端应该用什么通讯方式最好?局域网用UDP通讯很快。看个人喜欢咯你要用WCF也可以。
    2.如果要适用外网,又应该用什么通讯方式?内外网没区别,外网的话要有一个外网服务器。
    3.服务端应该怎样验证身份和权限?认证的方式有好多种,电子证书(以前那些加密狗什么的),NTID,指纹,刷脸等等,数据可以加密,你可以去了解一下非对称加密怎么玩的,权限可以做的很复杂,可以独立成一个权限系统
    4.数据序列化是用JSON或者XML还是有其他方式?序列化跟JSON和XML没什么关系,序列化完之后你可以用JSON或者XML的格式来传输,看你的通讯协议怎么做
    5.能否给个Demo。你自己搜索,Socket聊天程序也可以是Demo.
    6.服务端最好是用.NET的,当然如果有其他明显适合的也可以。这个你自己决定

    客户端软件(如winForm,wpf等)直接链接数据库是不安全的,也不允许这么做
    大数据量,C-S通讯,当然首先考虑tcp方式了,是http方式的3倍,注意IIS7支持tcp
    可以用wcf,socket

    简单方式,就用asp.net,弄个大点的服务器(说服用户买高配服务器),将耗时操作甩给服务器,这样浏览器端就感觉快了
    无非就是优化原生态sql语句,切记不用EF,LINQ

    用HTTP  做BS就行了。如果需求不满足的话,就在客户端用SSL+HTTP API  实现。

    我们的业务场景和你很相似,需要同时接入显示10万级的车辆。因为车辆的数据都是实时刷新的。所以通讯过程使用的是 自定义二进制协议 + TCP(楼主 可以换成websocket) 注意数据包大小直接影响你的用户体验,建议尽量只传状态数据。当需要请求单个目标的全部数据时再使用HTTP方式从服务 Redis中拉取。拉取后注意这个车辆需要改变状态,向服务端发出请求说这个目标的数据是全量推送的。
    如果楼主需要在界面进行显示的话建议是聚合显示 。因为在客户端绘制会占用大量的CPU I7 7700K也没办法完成同一秒绘制10万个点,的同时保证 流畅。 所有采用分区法,只对特定的区域进行绘制会起到很好的体验改善。 当然如果楼主对通讯没什么经验的话建议不要用二进制协议,可以用 protobuf 进行数据传输。
    基础数据根据使用场景可以采用本地缓存+服务器分批请求的方式进行加载。

    因为涉及的推送功能,所以webapi感觉是不太合适的,wcf和socket都研究了一下,wcf没啥好说的,想学的网上教程都能找到。 socket(或者websocket)有一点想问一下,客户端是应该所有功能共用一个socket还是应该一个模块一个socket?服务端应该怎样识 别客户端发过来的数据是做什么的?是在数据内容里加一个字段用来标识这一段数据的目的,然后服务端用case分支来判断?还是有其他更好的方法?

    Web完全可以,推送用SignalR。
    可以分页,说明传输的数据并不多。而且十万级别的数据也不是很多。
    有特殊功能,比如打印之类的,可以自定义浏览器WebBrowser之类的包装一下,高级点用CEFSharp

    首先建议抛弃WCF,很简单,因为.net后续版本将会是.net core为核心的,不再支持WCF。

    然后建议使用gRpc/thrift等第三方通信框架,或使用netty这样的第三方整合框架,这个建议是为了未来其他客户端接入服务端有标准通讯框架会更快速和便捷。

    如果你想要使用我给你的框架,那么 https://github.com/Coldairarrow/DotNettyRPC 这个RPC的DEMO很合适你使用。

    这样的好处是他是接口分离的框架,你未来使用框架的时候可以先根据设计给开发接口,服务端和客户端可以并发开发,对接测试。

    这样你给客户端的东西只要是接口就好了,你甚至可以给对方源代码。因为只有接口,实现是你自己注册上去的:


    //接口
        public interface IHello
        {
            string SayHello(string msg);
        }

    //实现
        public class Hello : IHello
        {
            public string SayHello(string msg)
            {
                return msg;
            }
        }

    //服务端代码
    using Coldairarrow.DotNettyRPC;
    using Common;
    using System;

    namespace Server
    {
        class Program
        {
            static void Main(string[] args)
            {
                RPCServer rPCServer = new RPCServer(9999);
                rPCServer.RegisterService<IHello, Hello>();
                rPCServer.Start();

                Console.ReadLine();
            }
        }
    }

    //客户端调用
    using Coldairarrow.DotNettyRPC;
    using Common;
    using System;

    namespace Client
    {
        class Program
        {
            static void Main(string[] args)
            {
                IHello client = RPCClientFactory.GetClient<IHello>("127.0.0.1", 9999);
                var msg = client.SayHello("Hello");
                Console.WriteLine(msg);
                Console.ReadLine();
            }
        }
    }
    服务端用webservice就行了;
    客户端用HttpWebRequest链接服务端;
    两端用json传输数据,解析方便; 
    Socket处理服务端实时通知;
    用Token处理权限问题

    客户端 为什么不能用网页展示那?    如果选择客户端是IE展示     asp.net   webform    就搞定了。  但是按钮有刷新东西

    如果不想有刷新动作  就  html+ajax + 服务端    

    然后在说推送。  asp.net  封装了2个推送  一个webSocket  一个SignalR    还可以  自己写 段轮询 或者长轮询 。 看服务器 和使用人数来定义

    你需要的东西就完成了

    如果客户端非得用 winform 那就是  winform+webservice    推送方式  一软是那4个  

    奉劝你, 没有网络开发和协议设计经验, 别想那么多. 直接上BS, 让客户在浏览器操作.

    如果客户端还有一些特殊需求, 比如读写本地文件或者摄像头之类浏览器干不了的活, 用CefSharp自己做个壳.

    如果客户端还有实时性比较高的操作, 或者需要服务端主动下发指令的操作, 用websocket.

    客户端输入大量数据的话, 估计不是手工输入, 估计是文件导入之类. 耗时很久的用异步线程慢慢传, 用户不用等着.

    怕服务端处理不过来的, 用队列. 什么rabbitMQ rocketMQ之类的学学, 懒得学的直接用Redis的List做队列也行

    别用十万数据吓唬人, 什么软件也不会同时展示十万数据, 都是分页操作, 十万数据对普通的服务器无论增删改查还是存储都是小case. 

    除非是GIS或点线坐标的客户端渲染. 如果大量数据需要在客户端图形方式渲染呈现的, 公用部分在服务端渲染了缓存, 客户端直接请求渲染结果, 每个客户端不一样的部分在客户端渲染.

    你现有项目的数据库操作代码, 都用得上, 放在网站后台改改适配就行.

    什么加密身份验证之类的, 对网站来说太简单了, 都不用说.

    总结来说, 你这就是做个网站, 别想那么复杂, 用户界面就是网页, 通讯协议就是http, 特殊协议用websocket写. 客户端需要
    小蜜蜂论坛顶帖机做一些浏览器做不了的事, 就用外壳包装一个浏览器.

    展开全文
  •  可以看到,从第四步开始,客户端和服务器端的工作内容有了不一样。  socket是啥?  简单来说,是个函数,用来创建套接字。  那么,套接字又是什么鬼?  为了防止本篇日志闲扯太多,我尽量简单说,...
  • PHP网页的后台OPC客户端通信,实现对PLC数据的读取展示
  • 实现客户端与服务端的HTTP通讯

    千次阅读 2018-07-11 18:21:19
    参考博客地址:http://www.cnblogs.com/menlsh/archive/2013/05/22/3091983.html 实习(打杂)期间收到的第一个代码相关的任务是负责客户端与服务端之间的数据通讯任务。在询问了前辈以后,我得知Socket通讯往往...
  • 摘要:JAVA源码,媒体网络,山寨QQ,Java聊天程序 Java编写的山寨QQ,多人聊天+用户在线,程序分服务端和客户端,典型C/S结构, 当用户发送第一次请求的时候,验证用户登录,创建一个该qq号服务器端保持通讯连接得线程...
  • 此插件的作用是可以把数据推送到网页端(原理是把C#d的程序当作服务器,网页端是一个客户端
  • 我会先讲解一下socket通讯的基础知识,希望大家可以认真看完,代码实现其实只是一种根据通讯原理一步步实现的逻辑,如果你了解了原理,换另外一种语言你也很快能写出来,而且通讯过程中遇到问题的时候你可以很快找到...
  • 大家知道,客户端的域名或IP地址是固定不变的,而客户端的ip地址一般是随机变换的。所以客户端可以直接通过域名向服务器发送请求消息,而服务器无法主动主动向客户端发送消息,...所以最佳方式是服务器和客户端建立可信
  • 基于XMPP协议的 Android 即时通讯客户端
  • web服务器与web客户端通讯过程

    千次阅读 2017-10-25 11:18:18
    步骤一:客户端请求 1)以标准的方式描述这个消息,以便接收这个消息的WEB服务器能够理解它。因此要用到HTTP 协议(超文本传输协议)。WEB利用这个协议来描述请求响应。经过描述的请求消息被成 为http请求,他有...
  • 如何区分服务端和客户端

    千次阅读 2020-07-13 18:20:47
    如何区分服务端和客户端? 说白了,谁来设置要实现什么功能,那就是服务端。 那他设置的东西谁来用,来连接,就是客户端。 对我来说最简单粗暴的理解!
  • 协议:双方在交互、通讯的时候, 遵守的一种规范、规则。 http协议:针对网络上的客户端 与 服务器端在执行http请求的时候,遵守的一种规范。 其实就是规定了客户端在访问服务器端的时候,要带上哪些东西, 服务器端...
  • Java面试题大全(2020版)

    万次阅读 多人点赞 2019-11-26 11:59:06
    发现网上很多Java面试题都没有答案,所以花了很长时间搜集整理出来了这套Java面试题大全,...JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境运行环境。 JRE:Java Runtime Environ...
  • 这一篇跟大家分享 Web 客户端/网页与 Web 服务器的通信过程,并详细讲述通信协议:HTTP 协议 TCP 协议。 无论你是前端开发者还是后端开发者,以及测试工程师,这篇文章的知识都是你需要弄懂的。 读完这一篇文章,...
  • 公司网站需要即时通讯,就研究了下一番百度下来发现websocket做客户端+superwebsocket服务端比较靠谱又想最小化无法发现消息,加了notification(localhost可以但是域名需要https,呵呵哒)想着干脆做个winform客户端...
  • WCF实现双工通讯客户端调用

    千次阅读 2018-03-24 15:42:04
    新建一个Windows窗体应用程序(即客户端Client)一个WCF服务库(WCF双工)在WCF双工项目下:新建一歌ILogger接口实现该接口的Logger类在ILogger接口中using System;using System.Collections.Generic;using ...
  • 服务端:服务端是为客户端服务的,服务的内容诸如向客户端提供资源,保存客户端...因特网发展以后,较常用的用户端包括了如万维网使用的网页浏览器,收寄电子邮件时的电子邮件客户端,以及即时通讯客户端软件等。对
  • Delphi的WebSocket客户端实现 Delphi有免费的WebSocket客户端实现吗?我发现只有这一个: WebSockets Delphi Components
  • c# webApi 服务端和客户端 详细实例

    万次阅读 2018-08-08 23:06:50
    一定要注意,客户端调用的时候,看一下URL对不对,尤其是端口号,别写错了,还有就是服务端处理程序的文件名称,必须全称,带后缀的那种。 以上就是全部详细步骤,有什么问题可以留言,谢谢!
  • 适用于物联网设备的接入,网页端实时监控终端数据的场景项目运行新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格...
  • Websocket只需要一次HTTP握手,所以说整个通讯过程是建立在一次连接/状态中,也就避免了HTTP的非状态性,服务端会一直知道你的信息,直到你关闭请求 ,这样就解决了接线员要反复解析HTTP协议,还要查看identity info...
  • OPC客户端测试工具

    2018-02-07 09:59:04
    与Win98、WinNT、WINXP、WIN2000、WIN2003系统兼容,完全封装了COM技术实现细节,使二次开发的程序员无需了解COMOPC规范底层细节,降低客户端程序开发的复杂程度减少了熟悉OPC技术的时间。 (二)工具包的特点:...
  • 关于服务器端和客户端的区别

    万次阅读 2018-07-18 17:34:41
    服务端:服务端是为客户端服务的,服务的内容诸如向客户端提供资源,保存客户端数据。是实现游戏特色化的重要途径,也是最直接可以通过游戏表现出来的技术,比如你要修改某个NPC的参数,重加载后,在游戏内立刻体现...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 50,411
精华内容 20,164
关键字:

网页和客户端通讯