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

sqlserversocket

發布時間: 2022-05-02 18:42:18

⑴ jdbc socketread阻塞,怎麼破

你好,提示很清楚嘛,I/O異常:讀取失敗:連接超時。

可能的情況包括:網線沒有插好;其他原因導致和資料庫伺服器的網路斷開;連接資料庫的URI不正確;資料庫沒有正確配置;資料庫掛了。

總之一點,沒有連上資料庫。

sql server 2012 sa無法登錄 error establish socket;

你打開sql server configuration manager 展開 sql server 網路配置,
你看看裡面的 tcp/ip 是否啟用,然後右擊 → 屬性 可以設置 IP、埠

⑶ MyEclipse6.5 連接sqlserver2005報錯

打相應的補丁。MyEclipse
DB連接資料庫:
打開MyEclipse,在菜單欄中選擇窗口→顯示視圖→其他→選擇MyEclipse
Database文件夾下的DB
Browser確定後,就打開DB的視圖窗口了,右鍵
MyEclipse
Derby,選擇New...,
Driver
template:這里選擇主流資料庫
Driver
name:自定義名
Connection
URL:「<>」把這個符號去掉,默認埠號為:1433
User
name:一般為sa
Password:密碼為空
Driver
JARs:
這里點Add
JARs添加3個jar文件,這3個文件名為:msbase.jar,mssqlserver.jar,msutil.jar,然後點TestDriver
測試連接,提示輸入密碼,密碼為空直接確定,會提示錯誤Error...,這時候我們需要「SQLserver2000資料庫sp3補丁」,解壓安裝,運行sql2ks3目錄下的setup.bat批處理文件,打完補丁後,將SQL2000的服務管理器打開,這時候在點TestDriver
測試連接,提示:Database
connection
successfully
established.就連接上資料庫了.
我裝的是
sql
server
2000
4合1
簡體中文版].psql2k_4in1
個人版的,裝完以後,直接安裝SQLserver2000資料庫sp3補丁,補丁打完後,我直接進入MyEclipse
7.1
連接失敗,提示:Error
while
performing
database
login
with
the
pubs
driver:[Microsoft][SQLServer
2000
Driver
for
JDBC]Error
establishing
socket.原來是忘記啟動SQL
Server
服務管理器,我的伺服器名:PC-WWDZ
這時候我在點擊Test
Driver
提示:Enter
your
password
因為我sa帳戶的密碼為空,我直接回車,這時候提示:Database
connection
successfully
estalished.
成功連接資料庫。
注意:
1.Connection
URL:jdbc:microsoft:sqlserver://localhost:1433
2.Driver
JARs
文件:3個文件分別是
msbase.jar,mssqlserver.jar,msutil.jar。

⑷ 如何把socket接收的數據寫入sqlserver資料庫

這個應該不難啊,接到數據就往資料庫寫

⑸ socket closed錯誤是怎麼回事

1. Windows伺服器運行自動更新。具體為什麼自動更新運行後,就會消耗系統這么多的SOCKET
連接,我還搞不清楚。但是有一點,自動更新肯定會佔用網路帶寬和CPU,在伺服器上,我覺得應該是關閉自動更新的,採用人工更新的方法。

2.機器中了木馬。木馬會打開很多後門,創建大量的連接,包括區域網肉雞上的,還有外網的。這也會導致機器出現無法上網,或者程序無法連接。在搜索到的結果中,大量的結果都是採用的SQLSERVER資料庫伺服器,這是很容易招來木馬和病毒的伺服器,大部分是SQLSERVER出問題,不是偶然的。

3.虛擬內存配置過低。第一次發現這個問題後,我到現場打開機器,確實報了一個虛擬內存的錯誤,說虛擬內容不足。

4.有不當程序創建了大量的短連接,由於程序的不健壯,導致
SOCKET處於忙碌或者TIME_WAIT狀態,或者伺服器和客戶端有一方出現異常,而另一方沒有得到通知,還在連接,持續不斷的做寫操作。

⑹ sqlserver資料庫長連接和短連接的區別

其實長連接是相對於通常的短連接而說的,也就是長時間保持客戶端與服務端的連接狀態。
通常的短連接操作步驟是:
連接-》數據傳輸-》關閉連接;
而長連接通常就是:
連接-》數據傳輸-》保持連接-》數據傳輸-》保持連接-》…………-》關閉連接;
這就要求長連接在沒有數據通信時,定時發送數據包,以維持連接狀態,短連接在沒有數據傳輸時直接關閉就行了
什麼時候用長連接,短連接?
長連接主要用於在少數客戶端與服務端的頻繁通信,因為這時候如果用短連接頻繁通信常會發生Socket出錯,並且頻繁創建Socket連接也是對資源的浪費。
但是對於服務端來說,長連接也會耗費一定的資源,需要專門的線程(unix下可以用進程管理)來負責維護連接狀態。
總之,長連接和短連接的選擇要視情況而定。

⑺ Java socket編程伺服器端能接收到客戶端的數據,但是伺服器端使用數據採用JDBC連接SQL server時出錯

你把SQL Server報錯的異常貼一下,這樣可以看一下具體是什麼問題,才能對症解決

⑻ 如何用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();
}
}
}

⑼ 利用Java編寫一個程序利用Socket,實現網路的點對點文件傳輸並且能實現聊天,發個給我學習下,好嗎

這個時比較簡單的。
package QQ;

import java.net.*;
import java.io.*;
import java.sql.*;
import java.util.*;

public class QQServer {
public static void main(String args[]) {
try {
HashMap<String , Socket> hm = new

HashMap<String , Socket>() ;
// 伺服器到8000埠監聽(1)
ServerSocket ss = new ServerSocket

(8000);

while (true) {
System.out.println("伺服器正在

8000埠監聽.....");
Socket s = ss.accept();

MyService t = new MyService();
t.setSocket(s) ;
t.setHashMap(hm) ;
t.start();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}

class MyService extends Thread {
private Socket s ;
private HashMap<String , Socket> hm ;
public void setHashMap(HashMap<String , Socket> hm){
this.hm = hm ;
}
public void setSocket(Socket s){
this.s = s ;
}
public void run() {
try {
// 接收客戶端發送來的用戶名和密碼(2)
InputStream is = s.getInputStream();
InputStreamReader isr = new InputStreamReader

(is);
BufferedReader br = new BufferedReader(isr);

String uandp = br.readLine();

// 拆分用戶名和密碼(4)
String u = "";
String p = "";
try{
u = uandp.split("%")[0];
p = uandp.split("%")[1];
}catch(Exception e){}

// 到資料庫中驗證(5)
Class.forName

("com.microsoft.jdbc.sqlserver.SQLServerDriver");
Connection cn = DriverManager
.getConnection(

"jdbc:microsoft:sqlserver://127.0.0.1:1433;databasename=qq2",
"sa", "123");
PreparedStatement ps = cn
.prepareStatement("select

username from username where username=? and password=?");
ps.setString(1, u);
ps.setString(2, p);
ResultSet rs = ps.executeQuery();

// 發送確認信息到客戶端(7)
OutputStream os = s.getOutputStream();
OutputStreamWriter osw = new

OutputStreamWriter(os);
PrintWriter pw = new PrintWriter(osw, true);

if (rs.next()) {
pw.println("ok");
//將自己的名字發送給HashMap中的其他人

(13)
for(Socket ts : hm.values()){
OutputStream tos =

ts.getOutputStream() ;
OutputStreamWriter tosw = new

OutputStreamWriter(tos) ;
PrintWriter tpw = new

PrintWriter(tosw , true) ;

tpw.println("user%"+u) ;
}
//將其他人的名字發送給自己(13)
for(String tu : hm.keySet()){
pw.println("user%"+tu) ;
}
//將用戶名和對應的Socket存入HashMap

(13)
hm.put(u, s) ;

// 接收客戶端發送來的信息(11)
while (true) {
String message = br.readLine

();

if(message.equals("exit")){
for(Socket ts :

hm.values()){
OutputStream

tos = ts.getOutputStream() ;

OutputStreamWriter tosw = new OutputStreamWriter(tos) ;
PrintWriter

tpw = new PrintWriter(tosw , true) ;

tpw.println

("exit%"+u);
}
hm.remove(u);
}
String to = message.split

("%")[0];
String mess = message.split

("%")[1];

Socket ts = hm.get(to);

OutputStream tos =

ts.getOutputStream();
OutputStreamWriter tosw = new

OutputStreamWriter(tos);
PrintWriter tpw = new

PrintWriter(tosw, true);

tpw.println("mess%"+mess

+"\n");
System.out.println(message);
}
} else {
pw.println("err");
}
} catch (Exception e) {}
}
}