A. socket发送错误与sql有关系吗
从你目前的问题描述看不出关系,你可以把具体错误信息以及使用的数据库环境等信息,补充完善问题。
B. 如何使用Socket获取服务器的SQL表的字段
好像没有听说这种做法,不过可以从几个方面谈这个问题:
1、是不是必要?
任何一个类型的SQL数据库.NET都有对应的数据连接方法,MySQL, Oracle, SQL Server都可以在ADO.NET中使用。那么就不是很必要。
2、一定要用,怎么用?
这个就相当复杂了,不是说Socket复杂,是你要设计的通讯代码复制,可以说绝对不亚于你所写的程序,所有关键通讯代码既要有数据又要有结构。那么就将服务器端读到的数据转换成XML格式,再在前后增加标识符,如:<!DATA> XML Data <!EOF>
3、有没有可替代的方法?
有,SQL Server可以使用复杂,合并复制、事务复制,不过这个需要你在程序设计之初就要考虑表格的结构,另外复制需要更新,也就是说需要有.NET操纵复制事务。
4、其它解决办法?
这里假设你需要绕开版权问题,不希望采购SQL企业版或者标准版程序,那么可以使用MSDE这样的免费版本,这样有一个问题,就是限制了连接的数量,怎么办,可以使用WebSerices,WebSerices是同过XML传递数据的,只要客户端与服务器端都采用相同的数据结构是完全可以不使用ADO.NET连接就可以完成数据传递、修改的。
C. C#socket和SQL Server的问题
您先写一个Socket通信的工具
双方规定好通信协议.例如字符串传输等.
然后socket通信结束.收到了对应的字符串.使用ADO.NET技术插入数据库即可
D. socket服务端如何连接上mysql数据库来保存数据
加载数据库驱动:Class.forName("org.gjt.mm.mysql.Driver"); //加载数据库驱动
String url = "jdbc:mysql://localhost:3306/test";
String user = "root";
String passowrd = "123456";
获取数据库连接Connection con数=DriverManager.getConnection(url,user,password)
获取SQL执行器 PreparedStatement prepare = con.prepareStatement("SQL语句")
执行SQL语句,得到结果集 ResultSet result = prepare.executeQuery();
while(result.next()){
//读取结果
}
最后不要忘记导入jdbc驱动包
纯工手打字,请采纳哈
E. 如何用c#实现把socket接收的数据写入sqlserver数据库
Asp.net中C#使用Socket发送和接收TCP数据的方法。
具体程序代码如下:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Net;
usingSystem.Net.Sockets;
usingSystem.Text;
namespaceConsoleApplication1
{
publicstaticclassSocketTest
{
privatestaticEncodingencode=Encoding.Default;
///<summary>
///监听请求
///</summary>
///<paramname="port"></param>
publicstaticvoidListen(intport)
{
SocketlistenSocket=newSocket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
listenSocket.Bind(newIPEndPoint(IPAddress.Any,port));
listenSocket.Listen(100);
Console.WriteLine("Listen"+port+"...");
while(true)
{
SocketacceptSocket=listenSocket.Accept();
stringreceiveData=Receive(acceptSocket,5000);//5secondstimeout.
Console.WriteLine("Receive:"+receiveData);
acceptSocket.Send(encode.GetBytes("ok"));
DestroySocket(acceptSocket);//import
}
}
///<summary>
///发送数据
///</summary>
///<paramname="host"></param>
///<paramname="port"></param>
///<paramname="data"></param>
///<returns></returns>
publicstaticstringSend(stringhost,intport,stringdata)
{
stringresult=string.Empty;
SocketclientSocket=newSocket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
clientSocket.Connect(host,port);
clientSocket.Send(encode.GetBytes(data));
Console.WriteLine("Send:"+data);
result=Receive(clientSocket,5000*2);//5*2secondstimeout.
Console.WriteLine("Receive:"+result);
DestroySocket(clientSocket);
returnresult;
}
///<summary>
///接收数据
///</summary>
///<paramname="socket"></param>
///<paramname="timeout"></param>
///<returns></returns>
privatestaticstringReceive(Socketsocket,inttimeout)
{
stringresult=string.Empty;
socket.ReceiveTimeout=timeout;
List<byte>data=newList<byte>();
byte[]buffer=newbyte[1024];
intlength=0;
try
{
while((length=socket.Receive(buffer))>0)
{
for(intj=0;j<length;j++)
{
data.Add(buffer[j]);
}
if(length<buffer.Length)
{
break;
}
}
}
catch{}
if(data.Count>0)
{
result=encode.GetString(data.ToArray(),0,data.Count);
}
returnresult;
}
///<summary>
///销毁Socket对象
///</summary>
///<paramname="socket"></param>
(Socketsocket)
{
if(socket.Connected)
{
socket.Shutdown(SocketShutdown.Both);
}
socket.Close();
}
}
}
F. mysql中socket路径
出现这个错误一般情况下是因为下面两个原因:1、MySQL 服务器没有开启。2、MySQL 服务器开启了,但不能找到 socket 文件。解决方法:1、虚拟主机用户,请联系空间商确认数据库是否正常启动,并跟空间商确认 MySQL 的 socket 文件启动地址,可以尝试在 论坛根目录下的配置文件 config.inc.php 中的 $dbhost 的值改为 $dbname = 'localhost:/tmp/mysql.socket‘,(这里假设 MySQL 的启动地址是 /tmp/mysql.socket,具体的启动地址依据空间商提供的启动地址而定)。
G. 跟踪sql语句与socket包的测试用例属于什么测试
//SQL语句
12 var_mp($sql);
13 $res = mysql_query($sql);
14 $arr = array();
15 //吧结果存入数组 并记录数组长度
16 $count = 0;
17 while($data = mysql_fetch_array($res)){
18 $arr[$count] = $data;
19 $count++;
H. Socket制作远程文件传输和sql数据库的问题
问题1 你好像没有说清楚,不好作答。
问题2 可以在客户端使用前做一个注册,由服务器产生一个身份识别码,此后在客户端每次连接服务器时验证这个注册码。数据一般来说都是要加密的,尤其是服务器和客户端之间的指令信息,如果明文传送会很不安全。
问题3 在C/S架构里,一般都是客户端主动去连接服务器。即使是服务器要向客户端发送指令,也是在客户端来连接时判断是否有对应此客户端的指令要下发。具体实现可以在服务端使用一个socket进行listen,当有客户端来连接时启动线程进行具体业务处理;而客户端则定时向服务器进行一次握手通讯,在握手的同时向服务器询问是否有可能存在的指令,如果有便进行指令下发;由于服务器一直在listen,所以客户端有要上传的指令可以随时连接并上传。
问题4 这个可以在问题2里的注册码里包含,比如可更新的文件有3个,指定客户端只能更新第一和第三个文件,你可以在注册码里一个特定字段写入"101",此后在客户端连接服务器时便可以知道自己能更新哪几个文件了。
a.大型系统中的服务器当然需要同时具备网络通信和数据库访问的功能。
因为要借助数据库来管理纷繁复杂的各种数据比如用户信息、文件信息、软件版本等,而没有Socket网络通信就算不上是服务器了。如果设计合理的话对速度是没有影响的,这就需要你在架构和数据库查询方面下功夫做一些优化。
b.socket只是网络编程的一种技术,并不是架构,对应你客户端使用C#的话,服务器底层可用C++实现,架构方面可以研究一下完成端口。
I. socket类型怎么保存在SQL数据里
可以使它序列化,然后存入数据库。
J. 批量发消息到客户端,用socket好还是每分钟读一次sql服务器上的信息好
这个问题挺有意思的。以前没做过,说说设想,仅供参考。
1、让服务器保留每个客户端的连接,在有新事件时直接Socket发送到客户端。
这个策略应该是时间性最好的,但毫无疑问,它的资源占用很大,受网络条件限制,并不实用。
2、产生新事件时存库,客户端每分钟来取一次。
这个可行性是没问题的,但是无法保证事件消息能够及时传递,要等一分钟呢。
3、客户端每几秒钟上送一个极短报文,只查询是否有新消息。
这应该是一个折中方案。比如说客户端每两秒上送一个6字节的短报文,如果有新事件,就回个1,否则回0。当收到1时重新发送一个完整的取新事件报文。这样是不是比较好呢?每分钟不过0.2K的数据量而已。