mIRC 套接字从 url 读取文本

Posted

技术标签:

【中文标题】mIRC 套接字从 url 读取文本【英文标题】:mIRC socket read text from url 【发布时间】:2015-03-23 06:38:58 【问题描述】:

我一直在尝试使用 mIRC 从 url 读取一小段文本,并在有人键入 !test 时将其回显/写入聊天。

套接字主机是 XXXXXXXXXXXX,因为它在我的 PC 上的 wamp 上运行。

页面上的数据不长,这里是页面。

SnOwEfLaKe 的战地 4(pc) 数据 |排名:140 |杀戮:66393 |日/日: 2 |宽/长:1.38 |评分:60646533 |上场时间:53.27 天 |准确性: 14.17%

alias demo 
var %user = $$1, %chan = $2, %sockname = demo. $+ $ticks
hfree -w %sockname | hmake %sockname
hadd %sockname user %user
hadd %sockname chan %chan
hadd %sockname host XXXXXXXXX
hadd %sockname port 80
hadd %sockname request /nb/bf4stats.php
sockopen -e %sockname $hget(%sockname,host) $hget(%sockname,port)


on *:text:!test:#:
demo #


on *:sockopen:demo.*: 
var %<< = sockwrite -nt $sockname
%<< GET $hget($sockname,request) HTTP/1.0
%<< Host: $sock($sockname).addr
%<< $crlf


on *:sockread:demo.*: 
var %header, %content
if (!$hget($sockname,header.complete)) 
sockread %header
while (%header != $null) 
  if (HTTP/* 2?? * iswm %header)  hadd $sockname following $true 
  elseif (HTTP/* 4?? * iswm %header)  hadd $sockname following $false 
  ;echo -ag %header
  sockread %header

if ($sockbr) hadd $sockname header.complete $true


if ($hget($sockname,header.complete)) 
 while ($sockbr) 
  sockread -f %content
  ;if (%content != $null) echo -ag %content




on *:sockclose:demo.*:
  if ($hget($sockname,following))  var %msg = Following 
  else  var %msg = Not following 

if ($hget($sockname,chan))  msg $v1 %msg 
  else  echo -ag %msg 

  hfree $sockname
 

我运气不好

【问题讨论】:

【参考方案1】:

我想出了办法。

on *:TEXT:*:#blood_wolf89:
if ($strip($1) === !bf4stats) 
var %user = $iif($2, $strip($2), Blood_Wolff89)
var %urlSafeUser = $regsubex(%user, /[^a-z\d_-]/gi, % $+ $base($asc(\t), 10, 16, 2))
var %url = http://api.bf4stats.com/api/playerInfo?plat=pc&name= $+ %urlSafeuser

JSONOpen -ud bf4stat %url

var %name = $JSON(bf4stat, player, name)
var %rank = $JSON(bf4stat, player, rank, nr)
var %score = $JSON(bf4stat, player, score)

var %kills = $JSON(bf4stat, stats, kills)
var %deaths = $JSON(bf4stat, stats, deaths)
var %kdRatio = $round($calc(%kills / %deaths), 2)

var %wins = $JSON(bf4stat, stats, numWins)
var %losses = $JSON(bf4stat, stats, numLosses)
var %wlRatio = $round($calc(%wins / %losses), 2)


var %played = $duration($JSON(bf4stat, stats, timePlayed))

var %hits = $JSON(bf4stat, stats, shotsHit)
var %misses = $JSON(bf4stat, stats, shotsFired)
var %accuracy = $round($calc(%hits / %misses * 100),2) $+ %
if ((%user == %name) || (%urlSafeuser == %name))  msg # [BF4Stats]:  %name      $+ 's Battlefield 4(PC) Stats $(|,0) Rank: %rank $(|,0) Kills: %kills $(|,0) K/D: %kdRatio $(|,0) W/L: %wlRatio $(|,0) Score: %score $(|,0) Time Played: %played $(|,0) Accuracy: %accuracy  
if ((%urlSafeuser !== %name))   msg # [BF4Stats]: Invalid Battlefield 4 Name.  


然后我有一个从这里得到的 JSON 解析器:http://hawkee.com/snippet/10194

【讨论】:

以上是关于mIRC 套接字从 url 读取文本的主要内容,如果未能解决你的问题,请参考以下文章

MIRC,在读取文本文件时忽略“|”?

从套接字读取时出现意外行为

ORACLE数据连接报错无法从套接字读取更多的数据怎么解决

如何使用python套接字从html获取输入

java跑一段时间后就报:Caused by: java.sql.SQLException: 无法从套接字读取更多的数据。

高分求解,急!!!Java连接Oracle10g 问题 java.sql.SQLException: 无法从套接字读取更多的数据