我已经构建了一个自托管的 wcf 服务器,使用wsHttpBinding. 我正在运行 Win 2003 服务器 R2 SP2。
如果我将其配置为侦听http://localhost:443/MyService,则一切正常。我可以连接到http://localhost:443/MyServiceInternet Explorer,但收到标准的“错误请求”消息
现在,如果我尝试切换到 HTTPS,我会看到一个奇怪的现象。
这是我所做的:
http://localhost到https://localhost和从Security=None到Security=Transport(如许多 wcf 教程中所述)我已经像这样注册了我的 HTTP 端口:
httpcfg delete ssl -i 0.0.0.0:443
httpcfg set ssl -i 0.0.0.0:443 -h ea2e450ef9d4...
Run Code Online (Sandbox Code Playgroud)请注意,我使用的证书是“真实证书”(即由受信任的 CA 颁发,即 Comodo)。服务器响应证书中提到的 NS 上的 ping。
现在,以下将超时:
Microsoft Telnet> open localhost 443
Run Code Online (Sandbox Code Playgroud)
这是来自netstat(Pid '4' 是 'System' 进程)的输出:
netstat -nao
Proto Local Adress Remote Adress State Pid
TCP 0.0.0.0:443 0.0.0.0:0 …Run Code Online (Sandbox Code Playgroud) 简短问题
在服务器端处理通过Telnet发送的Ctrl-C事件的正确方法是什么?
长问题
在套接字上调用recv()之后,我想适当地处理一些情况.其中之一是在收到Ctrl-C时返回某个错误代码.检测到这种情况的正确方法是什么?以下工作,但它似乎不正确:
size_t recv_count;
static char ctrl_c[5] = {0xff, 0xf4, 0xff, 0xfd, 0x06};
recv_count = recv(socket, buffer, buffer_size, 0);
if (recv_count == sizeof(ctrl_c) &&
memcmp(buffer, ctrl_c, sizeof(ctrl_c) == 0)
{
return CTRL_C_RECEIVED;
}
Run Code Online (Sandbox Code Playgroud)
我在这个 UNIX Socket FAQ 的旁注中找到了对Ctrl-C的评论:
[...](顺便说一下,带外通常也用于ctrl-C).
据我所知,接收带外数据是使用recv()完成的,并将某个标志作为最后一个参数.但是,当我在上面的代码中使用recv()等待数据时,我无法同时读取带外数据.除此之外,我正在使用recv()获得一些没有oob-flag的东西.
我正在用 C# 构建一个 telnet 应用程序(用于在老式 BBS 系统上编写门游戏脚本,例如 Wildcat)并且似乎无法为 ANSI 转义码(例如光标移动、着色等)构建一个工作解析器 - 几乎所有系统我' ve 测试发送无视任何“标准”的未定义序列。关于这个问题的资源似乎也很少,维基百科有我迄今为止找到的最深入的列表,但即使他们说它不完整 - 而我遇到的大多数其他网站只是复制/粘贴维基百科的文章。
我的问题:那里有图书馆吗?如果没有,一些解析代码/正则表达式怎么样?至少,一些适当的文档对于诸如此类的事情ESC[!_会非常有帮助。
我真的觉得我正在重新发明轮子,尤其是看到 Telnet 或多或少相当于互联网的轮子(至少在年龄方面;)
编辑:添加了一个奇怪的例子:
00000075h: 1B 5B 73 1B 5B 32 35 35 42 1B 5B 32 35 35 43 08 ; .[s.[255B.[255C.
00000085h: 5F 1B 5B 36 6E 1B 5B 75 1B 5B 21 5F 02 02 3F 48 ; _.[6n.[u.[!_..?H
00000095h: 54 4D 4C 3F 1B 5B 30 6D 5F 1B 5B 32 4A 1B 5B …Run Code Online (Sandbox Code Playgroud) PHP 中几乎所有 TELNET 实现的示例都使用套接字 ( fsockopen )。这对我不起作用,因为它花费了无法接受的时间(约 60 秒)。
我曾为其他目的尝试过fsockopen,但发现它与 cURL 相比速度较慢。
问题 1:为什么套接字这么慢?
更新:我发现我们需要设置stream_set_timeout函数,我们可以控制socket的执行时间。我很好奇如何设置正确的超时或如何在收到响应后使其“停止等待”。
我无法用 cURL 实现同样的事情。我应该把需要发送到 telnet 的命令放在哪里?是CURLOPT_CUSTOMREQUEST正确的选择吗?我正在做这样的事情:
class TELNETcURL{
public $errno;
public $errstr;
private $curl_handle;
private $curl_options = array(
CURLOPT_URL => "telnet://XXX.XXX.XXX.XXX:<port>",
CURLOPT_TIMEOUT => 40,
CURLOPT_RETURNTRANSFER => TRUE,
CURLOPT_HEADER => FALSE,
CURLOPT_PROTOCOLS => CURLPROTO_TELNET
);
function __construct(){
$this->curl_handle = curl_init();
curl_setopt_array($this->curl_handle, $this->curl_options);
}
public function exec_cmd($query) {
curl_setopt($this->curl_handle, CURLOPT_CUSTOMREQUEST, $query."\r\n");
$output = curl_exec($this->curl_handle);
return $output;
}
function __destruct(){
curl_close($this->curl_handle); …Run Code Online (Sandbox Code Playgroud) 我想我有两个问题:
我试图在不使用网络浏览器的情况下向网络服务器发送 HTTP 请求。我已经阅读了使用 Telnet 执行此操作的最常用方法,但我想知道其他方法。
另外,我认为我的 telnet 有问题。我激活了 telnet 客户端,然后在命令窗口中输入 telnet,然后输入“打开 IP 地址 80”,它会永远显示“连接到 IP 地址......”,但永远不会让我过去。大家有遇到过这个问题吗?另外,我在 Wireshark 上注意到 TCP 握手正确发生。
谢谢,麻烦您了!
我在寡妇7中启用了telnet,当我输入CMD时:telnet www.example.com 80屏幕清除然后我看不到我在键入的内容.虽然我可以跟踪每个键入的字符移动的光标.我看到这个链接最相关.但是,当我键入GET/HTTP/1.0时没有任何反应,当我按下ctrl +]时它不接受GET/HTTP/1.0.我该怎么做才能看到这个页面?
我有一个包含一行的 .ps1 脚本
Invoke-Expression -Command "C:\Builds\$BuildName /s /v`"/l*v c:\build_install.txt /qn`""<br/>
Run Code Online (Sandbox Code Playgroud)
这是执行产品的静默安装。
现在,如果我尝试通过 ssh 从 Linux 机器运行此命令,则会出现以下错误:
Invoke-Expression : A positional parameter cannot be found that accepts argument '/s'.
At line:1 char:1
+ Invoke-Expression C:\NWTBuilds\Setup-NimbleNWT-x64.2.0.4.117.exe /s /v`/l*v c:\n ...
+ CategoryInfo : InvalidArgument: (:) [Invoke-Expression], ParameterBindingException
+ FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.InvokeExpressionCommand
Run Code Online (Sandbox Code Playgroud)
你对此有什么建议吗?我需要提供任何凭据吗?
所以我也尝试了以下选项:
powershell.exe -Command ...powershell.exe -File C:\Sample.ps1但是,如果我Sample.ps1从 Windows Powershell运行相同的程序,是否完成了静默安装?
我有一个嵌入在 C++ 应用程序中的 telnet 服务器,我可以使用 telnet 毫无问题地连接到它。
我想编写一个将连接到我的服务器的节点应用程序,我已经尝试过
var net = require('net');
var port = 6502
var host = '127.0.0.1'
var socket = net.connect(port,host, function() {
console.log("Sending data");
socket.write("hello\r\n")
socket.on("data", function (data) {
console.log("received data");
console.log( data.toString() );
socket.end();
})
})
socket.on("error", function(err) {
console.log("Error");
console.log(err);
})
Run Code Online (Sandbox Code Playgroud)
不幸的是我得到的是这个
> node test.js
{ [Error: connect ECONNREFUSED]
code: 'ECONNREFUSED',
errno: 'ECONNREFUSED',
syscall: 'connect' }
Run Code Online (Sandbox Code Playgroud)
真正奇怪的是,如果我使用节点设置一个简单的回显服务器,一切正常。这是工作的回声服务器代码:
var net = require('net');
var server = net.createServer(function (socket) {
socket.write('Echo server\r\n');
socket.pipe(socket);
});
server.listen(6502, '127.0.0.1');
Run Code Online (Sandbox Code Playgroud)
从那我得到 …
我正在尝试使用 telnet 和 php 进行邮件验证。整个过程在终端中很好,但是当我使用 php 时shell_exec(),它只能运行到 Telnet 连接命令。连接 telnet 后,其余的 telnet 特定命令将不再起作用。
是否有其他方法需要我们使用 php 执行 telnet?
更新:我正在尝试复制本教程。
这是我的代码
public function mailtest(Request $request){
//Taking input email
$email = $request->input("email");
$divide = explode("@", $email);
//Find out the Domain
$server = $divide[1];
$response = shell_exec("nslookup -q=mx $server");
//Response of the nslookup
print_r($response);
$mailServerList = explode(PHP_EOL, $response);
$line = $mailServerList[4];
$serverArr = preg_split('/\s+/', $line);
$n = sizeof($serverArr);
$mailServer = $serverArr[$n-1];
//Printing out the mail server out of the …Run Code Online (Sandbox Code Playgroud) telnet ×10
sockets ×3
networking ×2
php ×2
ssh ×2
ansi-escape ×1
c ×1
c# ×1
cmd ×1
copy-paste ×1
curl ×1
http ×1
installation ×1
libreadline ×1
node.js ×1
parsing ×1
powershell ×1
ruby ×1
shell-exec ×1
silent ×1
tcp ×1
terminal ×1
wcf ×1
windows-7 ×1