我现在已经尝试使用 SQuirreL 连接到外部 DB2 数据库 2 天。我总是收到错误:
[jcc][t4][2030][11211][3.58.82] A communication error occurred during operations
on the connection's underlying socket, socket input stream, or socket output
stream. Error location: Reply.fill(). Message: Insufficient data.
ERRORCODE=-4499, SQLSTATE=08001
Run Code Online (Sandbox Code Playgroud)
我正在使用 IBM DB2 通用 JDBC 驱动程序 v9.7 FP5。我也尝试过 v9.5。
一件事是 DB2 通过 Putty 建立隧道。服务器运行Linux和IBM DB2 v7.1。我用的是Win7x64。
我在网上浏览了许多涵盖此错误的论坛主题,但没有一个真正对我有用。(即iReport 到 DB2 连接 ERRORCODE=-4499,SQLSTATE=08001)
首先,我认为这可能与未正确建立隧道的端口有关。但我从 Putty 会话配置中删除了端口,并发生了不同的错误。
问题的堆栈跟踪:
com.ibm.db2.jcc.am.io: [jcc][t4][2030][11211][3.58.82] A communication error
occurred during operations on the connection's underlying socket, socket input
stream, or socket output …
Run Code Online (Sandbox Code Playgroud) 如果读卡器中没有卡,我在获取PCSC阅读器序列号时遇到问题.我正在使用winscard.dll和c ++.
以下代码仅适用于读卡器中存在卡的情况.否则,不会检索SCardHandle.我还没有找到任何其他方法来获得SCardHandle.
SCARDHANDLE hCardHandle;
SCARDCONTEXT hSC;
WCHAR pCardReaderName[256];
LONG lReturn;
lReturn = SCardEstablishContext(SCARD_SCOPE_USER, 0, 0, &hSC);
if (lReturn != SCARD_S_SUCCESS)
{
Console::WriteLine("SCardEstablishContext() failed\n");
return;
}
my_select_reader(hSC, pCardReaderName); // just shows reader names in console and requires you to pick one
// connect to smart card
DWORD dwAP;
lReturn = SCardConnect( hSC,
(LPCWSTR)pCardReaderName,
SCARD_SHARE_SHARED,
SCARD_PROTOCOL_T0 | SCARD_PROTOCOL_T1 | SCARD_PROTOCOL_RAW,
&hCardHandle,
&dwAP );
if ( SCARD_S_SUCCESS != lReturn )
{
Console::WriteLine("Failed SCardConnect\n");
exit(1); // Or other appropriate action.
}
// get …
Run Code Online (Sandbox Code Playgroud) 我用TcpListener创建了服务器,它将每个请求作为虚拟HTTP响应.在客户端,我使用jQuery Ajax向该服务器发出请求.服务器获得成功请求并响应它.
问题是如果我通过输入地址向浏览器发出请求,它可以工作,我可以看到结果.如果我尝试发出jQuery.ajax(...)请求,那么ajax会因错误而失败.如果我使用Chrome检查器来监控网络,我发现它甚至无法从服务器获得响应.为什么会这样?
我的任务比我将与你分享的代码更大.但它的行为相同.
.NET C#@ Server端:
using System;
using System.Text;
using System.Net.Sockets;
using System.Threading;
using System.Net;
namespace Server {
public class Server
{
public static void Main()
{
try
{
TcpListener tcpListener = new TcpListener(IPAddress.Any, 1234);
tcpListener.Start();
while (true)
{
Socket socket = tcpListener.AcceptSocket();
DummyServer server = new DummyServer(socket);
Thread thrd = new Thread(new ThreadStart(server.Run));
thrd.Start();
}
}
catch (Exception e)
{
Console.WriteLine("Error..... " + e.StackTrace);
}
}
}
public class DummyServer
{
public DummyServer(Socket socket)
{
_socket = …
Run Code Online (Sandbox Code Playgroud) 我试图使用JNA在C#和Java之间建立一个回调接口.
C# < - CLI - > Visual C++ 2010 < - JNA - > Java
在Java和C++之间我使用非托管结构来获得回调功能.在C++中,我试图将具有回调指针的结构包装到托管对象中.
在Java和C++之间,一切正常,直到我尝试使用gcroot在非托管代码中生成托管对象.
更新它甚至没有gcroot失败.只需使用"Logger ^ logger = gcnew Logger(logStruct);"
我目前的解决方案如下:
LoggerStruct.java
package jnatest;
import com.sun.jna.Callback;
import com.sun.jna.Structure;
import java.util.logging.Logger;
public class LoggerStruct extends Structure {
private Logger logger;
public interface GetLevelCallback extends Callback {
int callback();
}
public GetLevelCallback getLevel;
public LoggerStruct(Logger log) {
super();
this.log = log;
getLevel = new GetLevelCallback() {
public int callback() {
return logger.getLevel().intValue();
}
} …
Run Code Online (Sandbox Code Playgroud) c# ×2
ajax ×1
db2 ×1
httprequest ×1
httpresponse ×1
java ×1
jdbc ×1
jna ×1
new-operator ×1
pcsc ×1
squirrel-sql ×1
tcplistener ×1
visual-c++ ×1
windows ×1
winscard ×1