當前位置:首頁 » 編程語言 » socketsql
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

socketsql

發布時間: 2022-02-16 08:17:12

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資料庫來保存數據

  1. 載入資料庫驅動:Class.forName("org.gjt.mm.mysql.Driver"); //載入資料庫驅動

    String url = "jdbc:mysql://localhost:3306/test";

    String user = "root";

    String passowrd = "123456";

  2. 獲取資料庫連接Connection con數=DriverManager.getConnection(url,user,password)

  3. 獲取SQL執行器 PreparedStatement prepare = con.prepareStatement("SQL語句")

  4. 執行SQL語句,得到結果集 ResultSet result = prepare.executeQuery();

  5. 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的數據量而已。