我正在测试Synapse并想知道如何建立安全连接.我注意到它支持SSL,但我不确定它是否适合我的需求.我没有CA的证书.我只想加密我的服务器程序和客户端程序之间的所有数据.当然,我可以在发送之前自己加密数据.但是如果SSL可以加密数据,也许我可以使用它.据我所知,SSL用于"加密"和"身份验证".我需要的只是"加密".Synapse有可能吗?
更新:
感谢daemon_x和Synapse的作者Lukas Gebauer的帮助,我想我终于让它发挥了作用.这是我做的:
服务器端:
1)在你的单元中使用ssl_openssl并将'libeay32.dll'和'ssleay32.dll'放到exe文件的同一目录中
2)接受连接后,为新创建的套接字添加以下代码行.
fclient.SSLAcceptConnection;
Run Code Online (Sandbox Code Playgroud)
客户方:
1)在你的单元中使用ssl_openssl并将'libeay32.dll'和'ssleay32.dll'放到exe文件的同一目录中
2)连接到服务器后,添加以下行.
fclient.SSLDoConnect;
Run Code Online (Sandbox Code Playgroud)
如果没有发生错误,则连接现在是安全的.但是当您运行代码时,如Synapse文档中所述,您可能会注意到SSLAcceptConnection需要一些时间才能返回.因此,如果您想加快速度,最好先预先创建证书文件和私钥文件.并在SSLAcceptConnection之前添加以下代码
fclient.SSL.CertificateFile := 'bs-cert';
fclient.SSL.PrivateKeyFile := 'bs-privatekey';
Run Code Online (Sandbox Code Playgroud)
如果您没有证书和私钥,请参阅ssl_openssl中的"CreateSelfSignedCert"以获取自签名证书和私钥.您可以通过WriteStrToStream将FCertificate和FPrivatekey保存到文件中,稍后再使用它们.
我TTCPBlockSocket用于TCP/IP应用程序.问题是我无法确定何时连接丢失.
GetLastError返回0
Read返回0
但是,如果应用程序已连接,我会遇到这些值eaven所以我可以得到它如何在TCP/IP连接丢失时得到通知.
谢谢
在评估各种ESB时,我遇到了Apache Synapse和WSO2.在WSO2中,提到WSO2完全使用Synapse并在其基础上构建.
但是我还不清楚WSO2在Synapse上提供了哪些附加功能?(除了商业支持).
我可以看到的一个区别是用于管理代理定义,序列创建等的Web UI.WSO2是否还提供了其他功能而不是Synapse?如果在Synpase和WSO2之间有任何指导可供选择,请分享
我只是想确定为什么要通过Synapse去WSO2.
谢谢,哈里什
我目前正在尝试使用imap向软件添加在用户收件箱中列出未读电子邮件的功能.在使用indy10完全没有成功之后,我发现突触似乎更适合我需要的东西,但我找不到让它运转的方法.
我的问题是登录(因此我认为使用ssl配置),我无法找到"FullSSL","Sock.SSL.SSLType"和"AutoTLS"的工作组合,无论我做"登录()"功能失败.
为了测试,你是否有人能够使用synapse连接到gmail的imap服务器,如果是的话怎么样?
我认为标题很清楚.我想知道如何使用参数/参数发送HTTP POST请求并接收HTML响应 - 使用Delphi的Synapse库.
WSO2 ESB 4.8.1似乎不支持以下XPath函数:
有谁知道支持哪些XPath功能以及WSO2 ESB 4.8.1中不支持哪些功能?
我试图制作一个模拟nc(netcat)工具.打开文件并将其发送到TCP套接字.
客户(发件人)方
procedure TForm1.SpeedButton3Click(Sender: TObject);
var Client:TTCPBlockSocket;
FS: TFileStream;
begin
Client:=TTCPBlockSocket.Create;
Client.RaiseExcept:=True;
Client.Connect('192.168.1.95','9999');
FS:=TFileStream.Create('/tmp/test_print.pdf',fmOpenRead);
FS.Position:=0;
Client.SendStream(FS);
FS.Free;
Client.CloseSocket;
Client.Free;
end;
Run Code Online (Sandbox Code Playgroud)
服务器(接收方)方面
nc -l 192.168.1.95 9999> test.pdf
运行后我得到test.pdf但md5sum无效
fe2e5d86acd267ca39a9c15c456e1be0 /tmp/test_print.pdf
34d755aa81d72f525a5e691e98bed283 test.pdf
Run Code Online (Sandbox Code Playgroud)
尺寸也不同
-rw-rw---- 1 user1 DomainUsers 46444 ??? 8 17:11 /tmp/test_print.pdf
-rw-r--r-- 1 user1 DomainUsers 46448 ??? 11 15:40 test.pdf
Run Code Online (Sandbox Code Playgroud)
我做错了什么?我的错误在哪里?
ps test.pdf开头超出4个字节(6c,b5,00,00)
Run Code Online (Sandbox Code Playgroud)[user1@pandora6 /tmp]$ hexdump -C test.pdf | head -5 00000000 6c b5 00 00 25 50 44 46 2d 31 2e 34 0a 25 c7 …
只有对HTTP URL的GET请求才有效.如果我尝试请求HTTPS网址,则它不会返回任何内容.我几乎尝试了一切.感谢任何帮助.
这是我的代码:
SynHttp.Sock.CreateWithSSL(TSSLOpenSSL);
SynHttp.Sock.SSLDoConnect;
SynHttp.HTTPMethod('GET', 'https://www.google.com/');
Resp.LoadFromStream(SynHttp.Document);
HtmlResponse := Resp.Text;
Run Code Online (Sandbox Code Playgroud)
SynHTTP是THTTPSend对象.
我需要使用UDP协议创建带有synapse的服务器和客户端程序.
我创建了服务器程序来收听这样的任何消息
procedure TForm1.Timer1Timer(Sender: TObject);
var
resive:string;
begin
InitSocket;
resive:=UDPResiveSocket.RecvPacket(1000);
if resive<>'' then Memo1.Lines.Add('>' + resive);
DeInitSocket;
end;
procedure TForm1.InitSocket;
begin
if UDPResiveSocket <> nil then
DeInitSocket;
UDPResiveSocket := TUDPBlockSocket.Create;
UDPResiveSocket.CreateSocket;
UDPResiveSocket.Bind('0.0.0.0','22401');
UDPResiveSocket.AddMulticast('234.5.6.7');
UDPResiveSocket.MulticastTTL := 1;
end;
procedure TForm1.DeInitSocket;
begin
UDPResiveSocket.CloseSocket;
UDPResiveSocket.Free;
UDPResiveSocket := nil;
end;
Run Code Online (Sandbox Code Playgroud)
所以我收到所有收到的消息.但我想从此消息的来源发送回复.
我怎样才能做到这一点?我的方法对服务器/客户端有用吗?
你好我工作的弹簧调解员WSO2 ESB 4.6.0,使用本和本教程
我收到错误如下:
ERROR - SpringMediator Cannot look up Spring configuration conf/sample/resources/spring/springsample.xml
ERROR - SpringMediatorCannot reference application context with key : conf/sample/resources/spring/springsample.xml
Run Code Online (Sandbox Code Playgroud)
你能解释一下如何解决这个问题.
当我在wso2 esb中使用call out mediator时,使用DSS Endpoint我只收到请求,我没有得到响应,即使我把登录按顺序排列.我在这里发送我的代理服务.
<proxy xmlns="http://ws.apache.org/ns/synapse"
name="Binaryformat"
transports="https http"
startOnLoad="true"
trace="disable">
<description/>
<target>
<inSequence>
<property name="messageType" value="application/json" scope="axis2"/>
<property name="ContentType" value="application/json" scope="axis2"/>
<log level="full">
<property name="M1" value="*************Callout PROXY*************"/>
</log>
<callout serviceURL="http://192.168.1.201:9769/services/emp_DataService/">
<source type="envelope"/>
<target key="response"/>
</callout>
<log level="full">
<property name="Status" expression="get-property('response')"/>
</log>
<header name="To" action="remove"/>
<property name="RESPONSE" value="true"/>
<!--<property name="OUT_ONLY" value="true"/>-->
<send/>
</inSequence>
<outSequence>
<log level="full">
<property name="Status" expression="get-property('response')"/>
</log>
<payloadFactory media-type="xml">
<format>
<response>outonly</response>
</format>
<args/>
</payloadFactory>
<property name="OUT_ONLY" value="true"/>
<send/>
</outSequence>
</target>
</proxy>
Run Code Online (Sandbox Code Playgroud) 我正在使用Delphi项目中的Synapse库来进行一些网络连接.
当我尝试使用外部单元中定义的类型之一时,即:'TTCPBlockSocket',它有红色下划线并显示"Undeclared Identifier'TTCPBlockSocket'".
这些文件都在正确的文件夹中,'uses'语句可以找到它们并显示没有错误.
奇怪的是,我在另一个项目中有相同的设置,并且该项目中没有错误.
注意:我无法安装/编辑软件/设置,因此我无法添加任何修复程序.
将网页源下载到备忘录组件的最快方法是什么?我使用Indy和HttpCli组件.
问题是我有一个填充了100多个站点的列表框,我的程序将源代码下载到备忘录并解析该源文件的mp3文件.它类似于谷歌音乐搜索程序; 它使用Google查询来简化Google搜索.
我开始阅读导致我的问题的线程:我可以在具有解析功能的线程中创建一个IdHttp实例并告诉它解析列表框中的一半网站吗?
所以基本上当用户点击解析时,主线程应该这样做:
for i := 0 to listbox1.items.count div 2 do
get and parse
Run Code Online (Sandbox Code Playgroud)
,另一个线程应该做:
for i := form1.listbox1.items.count div 2 to form1.listbox1.items.count - 1 do
get and parse.
Run Code Online (Sandbox Code Playgroud)
,所以他们会form1.listbox2在同一时间添加解析的内容.或者在主线程中启动两个IdHttp实例可能更容易; 一个是上半部分,另一个是第二个?
为此:我应该使用Indy还是Synapse?