我在同一台机器上运行的VB和VC++程序之间实现了TCP/IP通信.在VC++方面,我产生了一个侦听连接的线程.在VB方面,我使用Winsock API连接到C++服务器.一切似乎都运行良好,特别是当我手动调试并逐步完成通信时.协议是基于文本的,命令在'\n'上终止,可能有也可能没有答案.
这就是问题所在.我正在尝试实现发送到服务器的命令,这需要一些处理,服务器将它们发送回客户端.在简单的条件下,这可以正常工作,但在重负载或不同的机器配置下,有时通信会中断.
客户端可能正在发送命令,但服务器可能正在发送先前命令的答案.在VB客户端以某种方式获得(而不是它得到"EIVED"一个"接收数据"说,)它打破了国家机器,我已经实现跟踪连接一个支离破碎的答案.
所以,是的,客户端和服务器正在同时谈话,这是一个问题.如何序列化或排队此通信?我知道这类似于以太网上的网络数据包冲突问题.
我试图通过开发盒连接到我们公司的端口9042和9160上的我们的一个升级Cassandra服务器..通过代码,我无法连接到它...程序被我的SELECT查询挂起..
所以我想知道有没有办法从我的开发盒中弄清楚这两个端口是否在我的Cassandra登台服务器上被阻止?
下面是我试图从我的开发盒连接的Cassandra登台服务器URL -
sc-host01.vip.slc.qa.host.com
我的开发盒机器网址是 -
username-dyn-vm1-4.phx-os1.tratus.dev.host.com
任何人都可以告诉我如何找出可能的原因,我无法连接到它...
如何从我的开发箱中检查我的Cassandra登台服务器上是否打开了这些端口?
更新: -
ubuntu@username-dyn-vm1-4:~/build$ traceroute sc-host01.vip.slc.qa.host.com
traceroute to sc-host01.vip.slc.qa.host.com (10.109.107.64), 30 hops max, 60 byte packets
1 10.9.209.1 (10.9.209.1) 4.594 ms 6.628 ms 8.299 ms
2 * * *
3 * * *
4 * * *
5 * * *
6 * * *
7 stgcass01-1.vip.slc.qa.host.com (10.109.107.64) 7.907 ms 3.312 ms 3.950 ms
Run Code Online (Sandbox Code Playgroud)
这是我运行nmap时得到的 -
ubuntu@username-dyn-vm1-4:~/build$ nmap -p T:9160 sc-host01.vip.slc.qa.host.com
Starting Nmap 6.00 ( http://nmap.org ) at 2013-10-13 20:01 UTC …
Run Code Online (Sandbox Code Playgroud) 我有这个简单的程序:
package main
import (
"fmt"
"net/http"
)
func main() {
http.HandleFunc("/users", UsersHandler)
fmt.Println("Starting server...")
http.ListenAndServe(":8181", nil)
}
func UsersHandler(w http.ResponseWriter, r *http.Request) {
fmt.Println("Users")
}
Run Code Online (Sandbox Code Playgroud)
如果我GET
从浏览器发送命令:http://localhost:8181
我可以看到打印的消息"用户",但如果我从telnet连接,则在执行时不会打印任何消息:
telnet 127.0.0.1 8181
GET /users HTTP/1.1
Run Code Online (Sandbox Code Playgroud)
知道为什么会这样吗?
我很难找到为什么我的perl脚本没有正确处理输出.
所以,代码(根据建议的更改更新):
sub telnet_connection{
my $targetHost = $_[0];
#my $uname = $_[1];
#my $pword = $_[2];
my @listOfCommands = @{$_[3]};
if($verbose){print "\t\tAttempting telnet connection to $targetHost\n"; }
eval{
$telnet = Net::Telnet->new( Timeout=>5, Errmode=>'return', dump_log=>"dump_log.txt", input_log=>"input_log.txt");
$telnet->open($targetHost);
$telnet->waitfor('/Username: $/i');
$telnet->print($username);
$telnet->waitfor('/PASSCODE: $/i');
$telnet->print($password);
$telnet->waitfor('/\>/');
#for(my $j=0; $j le scalar @listOfCommands; $j++)
for my $command (@listOfCommands)
{
if($verbose) { print "\t\tClient: " . $targetHost . " Command: $command\n"; }
if($verbose) { print "\t\tExecuting command: $command\n"; }
my @output = $telnet->cmd($command); …
Run Code Online (Sandbox Code Playgroud) 我知道要获取所有消息体,这是命令:
[imap_code] UID FETCH [uid] BODY.PEEK[TEXT]
Run Code Online (Sandbox Code Playgroud)
因此,我获得了整个邮件正文.但我需要排除部分附件.我只想从发件人,文本和/或html写的消息.
有办法吗?
这是带有附件的完整原始html邮件
我想只得到
<div dir="ltr">This is the message body<div><ul><li>one</li><li>two</li></ul></div></div>
Run Code Online (Sandbox Code Playgroud)
如果没有html版本,则为纯文本
尝试在Windows中使用Expect Script Active TCL在每次运行时发送电子邮件.下面是我的代码,但下面显示了一条错误消息,并希望了解如何避免此问题的任何帮助.谢谢.
#!/usr/bin/expect
# \
exec tclsh "$0" ${1+"$@"}
package require Expect
spawn plink -telnet IP PORT
send "ehlo *******.com\r";
send "AUTH LOGIN\r";
expect "334 VXNlcm5hbWU6" sleep .1;
send "*************\r";
sleep .1;
expect "334 UGFzc3dvcmQ6\r"
send "********\r";
sleep .1;
expect "235 Authentication succeeded\r";
send "MAIL from:******@*******.com\r";
expect "250 OK\r"
send "RCPT to:********@*********.com\r";
expect "250 Accepted\r"
send "DATA\r";
send "!!!TEXT HERE!!!\r";
send ".\r";
send "QUIT\r";
exit
Run Code Online (Sandbox Code Playgroud)
得到错误:
Error in startup script
send: spawn id exp2 not open
while executing …
Run Code Online (Sandbox Code Playgroud) 我试图在我的亚马逊 ec2 实例上设置一个 postfix SMTP 邮件服务器。我按照本指南http://cybart.com/how-to-install-and-configure-postfix-on-amazon-ec2/和许多其他关于配置 main.cf 的指南
每次我尝试 telnet 我的邮件服务器 mail.domain.com smtp 时,它都会尝试连接到地址 XXX.XXX.XXX.XX 但随后操作超时,我无法连接到远程主机。