C# ,服务端怎么用Socket传输数据库中的表的内容到客户端数据库中(SQL) 。

C# ,服务端怎么用Socket传输数据库中的表的内容到客户端数据库中(SQL) 。,第1张

好像没有听说这种做法,不过可以从几个方面谈这个问题:

1、是不是必要?

任何一个类型的SQL数据库NET都有对应的数据连接方法,MySQL, Oracle, SQL Server都可以在ADONET中使用。那么就不是很必要。

2、一定要用,怎么用?

这个就相当复杂了,不是说Socket复杂,是你要设计的通讯代码复制,可以说绝对不亚于你所写的程序,所有关键通讯代码既要有数据又要有结构。那么就将服务器端读到的数据转换成XML格式,再在前后增加标识符,如:<!DATA> XML Data <!EOF>

3、有没有可替代的方法?

有,SQL Server可以使用复杂,合并复制、事务复制,不过这个需要你在程序设计之初就要考虑表格的结构,另外复制需要更新,也就是说需要有NET *** 纵复制事务。

4、其它解决办法?

这里假设你需要绕开版权问题,不希望采购SQL企业版或者标准版程序,那么可以使用MSDE这样的免费版本,这样有一个问题,就是限制了连接的数量,怎么办,可以使用WebSerices,WebSerices是同过XML传递数据的,只要客户端与服务器端都采用相同的数据结构是完全可以不使用ADONET连接就可以完成数据传递、修改的。

先说下我对socketio的理解,websocket更像是开启了一个端口服务,来监视过往的通讯。所以我们可以依赖于当前站点80端口启socket服务,也可以放于其他端口上,比如:

1

require('socketio')listen(3000);

这样就是监视3000端口了,由于我用的免费服务器,没有权限打开其他端口,所以,我还是使用80了,由于80已经被express使用了,所以我只好在express使用的时候传进来了。

var server = >

分析:这是典型的socket没有正确设置的情况。

连接MySQL数据库有两种方式:TCP/IP(一般理解的端口的那种)和Unix套接字(一般叫socket或者sock)。大部分情况下,可以用localhost代表本机127001,但是在MySQL连接时,二者不可混用,而且MySQL中权限设置中localhost与127001也是分开设置的。当设置为127001时,系统通过TCP/IP方式连接数据库;当设置为localhost时,系统通过socket方式连接数据库。

解决:首先要看本机MySQL的socket套接字文件在哪里,查看命令是:

mysqld --verbose --help | grep socket

输出结果显示套接字文件的位置,比如:这台服务器显示的是

socket /var/run/mysqld/mysqldsock

然后修改php的配置文件phpini与之对应起来就好了。

找到这一项:

mysqldefault_socket =

一般来说这一项都是空的,改成:

mysqldefault_socket = /var/run/mysqld/mysqldsock

这里应写上一步查询到的文件,根据你的情况设置。至此php配置就修改好了,如果是CLI(命令行)方式或者CGI方式的话,立即就生效,如果是FASTCGI方式,需要重启一下fastcgi进程。

socket存取数据效率高。在应用层通过传输层进行数据通信时,socket存取数据效率要高于数据库,所以要用socket。socket指套接字。所谓套接字,就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。

以添加Socket数据库批量打印为例子来进行 *** 作;

根据标签纸实际尺寸设置纸张尺寸,然后点击上方工具栏中的数据库设置图标,在d出窗口中点击“添加”选择最下方的“Socket数据源”:

在d出窗口中填写各项Socket参数(地址、端口、编码等)。如果需用多字段,Socket返回字符串中请用分隔符拼接多字段内容,如:111111,222222,333333。数据源设置窗口中的“分隔符号”请选择对应分隔符,填写完毕后点击“添加-关闭”即可:

添加标签可变内容 此处添加对象,可以是文字、、条形码、二维码等,本文我们使用文字来演示添加方式。

点击左侧工具栏中的“A”,在画布上绘制普通文本并双击普通文本即可打开其“图形属性”窗口,然后点击“数据源”,可在此窗口中添加内容:

添加内容时,点击“数据源”窗口左侧“修改”按钮,将添加方式修改为“数据库导入”并选择所连接的Socket数据库及对应字段,点击编辑即可看到数据源中的内容,然后再点击“确定”即可将Socket数据库中的内容添加到画布上。

预览及打印 可变数据添加完毕预览的时候可以翻页查看并核对一下数据,确认无误后就可以点击打印机图标连接打印机打印了。

在连接Socket数据库时还需注意以下几个方面:

1、该服务器上提前应运行对应的Socket通讯响应的服务程序;

2、当打印软件提交数据获取指令(get01)时,该服务程序应及时返回一条打印数据;

3、当打印软件提交的指令有“##”前缀时,则为预览数据请求,服务程序视情况进行响应。

Aspnet中C#使用Socket发送和接收TCP数据的方法。

具体程序代码如下:

using System;

using SystemCollectionsGeneric;

using SystemNet;

using SystemNetSockets;

using SystemText;

namespace ConsoleApplication1

{

    public static class SocketTest

    {

        private static Encoding encode = EncodingDefault;

        /// <summary>

        /// 监听请求

        /// </summary>

        /// <param name="port"></param>

        public static void Listen(int port)

        {

            Socket listenSocket = new Socket(AddressFamilyInterNetwork, SocketTypeStream, ProtocolTypeTcp);

            listenSocketBind(new IPEndPoint(IPAddressAny, port));

            listenSocketListen(100);

            ConsoleWriteLine("Listen " + port + " ");

            while (true)

            {

                Socket acceptSocket = listenSocketAccept();

                string receiveData = Receive(acceptSocket, 5000); //5 seconds timeout

                ConsoleWriteLine("Receive:" + receiveData);

                acceptSocketSend(encodeGetBytes("ok"));

                DestroySocket(acceptSocket); //import

            }

        }

        /// <summary>

        /// 发送数据

        /// </summary>

        /// <param name="host"></param>

        /// <param name="port"></param>

        /// <param name="data"></param>

        /// <returns></returns>

        public static string Send(string host, int port, string data)

        {

            string result = stringEmpty;

            Socket clientSocket = new Socket(AddressFamilyInterNetwork, SocketTypeStream, ProtocolTypeTcp);

            clientSocketConnect(host, port);

            clientSocketSend(encodeGetBytes(data));

            ConsoleWriteLine("Send:" + data);

            result = Receive(clientSocket, 5000  2); //52 seconds timeout

            ConsoleWriteLine("Receive:" + result);

            DestroySocket(clientSocket);

            return result;

        }

        /// <summary>

        /// 接收数据

        /// </summary>

        /// <param name="socket"></param>

        /// <param name="timeout"></param>

        /// <returns></returns>

        private static string Receive(Socket socket, int timeout)

        {

            string result = stringEmpty;

            socketReceiveTimeout = timeout;

            List<byte> data = new List<byte>();

            byte[] buffer = new byte[1024];

            int length = 0;

            try

            {

                while ((length = socketReceive(buffer)) > 0)

                {

                    for (int j = 0; j < length; j++)

                    {

                        dataAdd(buffer[j]);

                    }

                    if (length < bufferLength)

                    {

                        break;

                    }

                }

            }

            catch { }

            if (dataCount > 0)

            {

                result = encodeGetString(dataToArray(), 0, dataCount);

            }

            return result;

        }

        /// <summary>

        /// 销毁Socket对象

        /// </summary>

        /// <param name="socket"></param>

        private static void DestroySocket(Socket socket)

        {

            if (socketConnected)

            {

                socketShutdown(SocketShutdownBoth);

            }

            socketClose();

        }

    }

}

以上就是关于C# ,服务端怎么用Socket传输数据库中的表的内容到客户端数据库中(SQL) 。全部的内容,包括:C# ,服务端怎么用Socket传输数据库中的表的内容到客户端数据库中(SQL) 。、nodejs 怎么把socket数据写入数据库、怎么解决localhost无法链接本地mysql数据库问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/10159171.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存