我试图通过HTTPS获取流的内容,但我必须通过HTTP代理.我不想使用cURL,而是使用fopen和context参数.
问题是,我无法通过HTTPS工作(HTTP工作正常).
这DOES NOT工作:
$stream = stream_context_create(Array("http" => Array("method" => "GET",
"timeout" => 20,
"proxy" => "tcp://my-proxy:3128",
'request_fulluri' => True
)));
echo file_get_contents('https://my-stream', false, $context);
Run Code Online (Sandbox Code Playgroud)
这DOES作品(卷曲):
$url = 'https://my-stream';
$proxy = 'my-proxy:3128';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_PROXY, $proxy);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
$curl_scraped_page = curl_exec($ch);
curl_close($ch);
echo $curl_scraped_page;
Run Code Online (Sandbox Code Playgroud)
有人知道第一段代码有什么问题吗?如果它与cURL一起使用,必须有一种方法使它适用于上下文.我试图将上下文选项更改为一堆不同的值,但没有运气.
任何帮助将不胜感激 !
谢谢.
我的问题是我的程序依赖于使用zlib的deflate()功能.
我首先初始化我z_stream,如下:
int setupGzipOutputStream(z_stream zStream) {
int zError;
zStream.zalloc = Z_NULL;
zStream.zfree = Z_NULL;
zStream.opaque = Z_NULL;
zError = deflateInit(&zStream, Z_COMPRESSION_LEVEL);
/* error handling code to test if zError != Z_OK... */
return EXIT_SUCCESS;
}
Run Code Online (Sandbox Code Playgroud)
我尝试使用以下函数将数据写入我的z-stream:
int compressDataToGzipOutputStream(unsigned char *myData, z_stream zStream, Boolean flushZStreamFlag) {
int zError;
int zOutHave;
FILE *outFp = stdout;
unsigned char zBuffer[Z_BUFFER_MAX_LENGTH] = {0};
zStream.next_in = myData;
zStream.avail_in = strlen(myData); /* myData is a null-terminated string */
do {
zStream.avail_out = Z_BUFFER_MAX_LENGTH; …Run Code Online (Sandbox Code Playgroud) 如何删除为普通I/O打开的文件?
我想解密文件.如果代码不正确,那么我需要删除输出文件.
我不能用,File.Delete()因为:
Windows NT 4.0平台注意:删除不会删除为普通I/O打开的文件或内存映射的文件.
try
{
FileStream fsIn = new FileStream(fileIn, FileMode.Open, FileAccess.Read, FileShare.Delete);
FileStream fsOut = new FileStream(fileOut, FileMode.OpenOrCreate, FileAccess.Write, FileShare.Delete);
PasswordDeriveBytes pdb = new PasswordDeriveBytes(Password, new byte[] {0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76});
Rijndael alg = Rijndael.Create();
alg.Key = pdb.GetBytes(32);
alg.IV = pdb.GetBytes(16);
CryptoStream cs = new CryptoStream(fsOut, alg.CreateDecryptor(), CryptoStreamMode.Write);
int bufferLen = 4096;
byte[] buffer = new byte[bufferLen];
int bytesRead;
do
{
bytesRead = fsIn.Read(buffer, 0, …Run Code Online (Sandbox Code Playgroud) 我会再次尝试这个问题,但比上次更好.
我有一个程序从各个地方读取二进制数据,然后在我编写的类中操作它.数据最初将从其源(可能会有所不同)读取,然后写入流,并将该流传递到类中以供类处理.
我的挣扎是弄清楚如何创建iostream和写入/读取它.我已经查看了各个地方,并在cplusplus.com上阅读了参考资料,但我找不到一个如何创建的简单示例iostream.
基于我所读到的,这是我尝试的:
#include <iostream>
using namespace std;
int main(){
streambuf* sb;
iostream s(sb);
s.put('h'); //segfault
}
Run Code Online (Sandbox Code Playgroud)
坦率地说,我不知道为什么会出现这种情况,或者如何修复它,所以我要求有人告诉我如何正确创建一个iostream对象,最终,我将能够执行以下内容:
void printByN(iostream s, n){
while (s.peek() != eof()){ // I'm not sure this is correct. need help with that too
char buf [n];
s.read(&buf, n);
cout << buf << endl;
}
}
int main(){
//create iostream s;
char* buf = "hello there my friend";
s.write(buf, strlen(buf));
}
Run Code Online (Sandbox Code Playgroud)
关键是我需要流知道它何时为空,并在该点返回一个特殊值.我不能使用a stringstream,因为二进制数据可能包含不用于终止数据的空字符.
如果这iostream是错误的方法,请告诉我一个更好的选择.
我有一个F#函数,如下所示:
open System.IO
open Microsoft.FSharp.Control.CommonExtensions
let rec copyData (ins:Stream) (outs:Stream) = async {
let! bytes = ins.AsyncRead(1)
do! outs.AsyncWrite(bytes)
return! moveData ins outs
}
Run Code Online (Sandbox Code Playgroud)
当ins流到达结尾时,它会抛出AtEndOfStream异常.所以我必须在调用函数中捕获它.如何通过检测流目前结束来防止此异常?
我有一个方法(.yml解析器)将输入流作为输入.问题是当它在某些地方遇到某些字符时会抛出错误,例如%.
我想要做的是获取流,用%占位符替换所有,然后将其传递给解析器.
这就是我所拥有的(当前输入不起作用):
stream = open('file.yml', 'r')
dict = yaml.safe_load(stream)
Run Code Online (Sandbox Code Playgroud)
但我认为我需要的是:
stream = open('file.yml', 'r')
temp_string = stringFromString(stream) #convert stream to string
temp_string.replace('%', '_PLACEHOLDER_') #replace with place holder
stream = streamFromString(temp_String) #conver back to stream
dict = yaml.safe_load(stream)
Run Code Online (Sandbox Code Playgroud) 我有两个应用程序在服务器上,一个在客户端上.
在服务器端,我写这样的流.
NetworkStream stream = client.GetStream();
byte[] msg = System.Text.Encoding.ASCII.GetBytes(messageSent);
stream.Write(msg, 0, msg.Length);
stream.Write(msg, 0, msg.Length);
Run Code Online (Sandbox Code Playgroud)
我在逐个流中写了多个字符串.弦的长度是可变的,达到最大长度约为500
问题:
如何在块中以客户端方式阅读
发生的事情有时候我会得到组合字符串
就像我送A,B,C一样
在客户端我收到了A,BC
我是这样的客户:
bytes = stream.Read(data, 0, data.Length);
Run Code Online (Sandbox Code Playgroud)
任何帮助表示赞赏.
我正在寻找一种方法来创建一个应用程序,允许捕获的相机视频在计算机上流式传输.例如,一个人可以在房间里走iPhone,而另一个人可以在他们的计算机上播放该视频.有点像单向Facetime,除了接收器在计算机上.此外,我不能只使用现有的应用程序,因为我想更改程序,对传入的数据进行一些计算机视觉处理.
目前,我发现AV Foundation应该是视频捕获的正确选项(来自这个问题).但是,我很难找到可以实际传输此数据的方法.特别是,搜索如何在iPhone上创建应用程序经常导致现有应用程序执行任务,而不是如何创建应用程序.
任何人都可以给我一个指向如何从iPhone流式传输视频的信息的指针?非常感谢你.
我正在用C#和XNA制作2D游戏.我目前正在进行保存和加载,所有数据都存储在文本文件中.
每个精灵都有一个状态:
public enum SpriteState
{
Alive,
Dead,
Chasing,
Sleeping,
Waiting
}
Run Code Online (Sandbox Code Playgroud)
保存时我只是执行这行代码:
StreamWriter.WriteLine(gameState);
Run Code Online (Sandbox Code Playgroud)
现在,当我正在加载游戏时,我必须阅读文本文件的那一行,将其存储在字符串变量中并执行足够的以下操作:
string inType = StreamReader.ReadLine();
if(inType == "Alive")
//Set the sprites state to alive
else if(inType == "Dead")
//Set the sprites state to alive
Run Code Online (Sandbox Code Playgroud)
等等......所以我的问题是:有没有更好的方法从文本文件中读取枚举类型并分配它?
非常感谢
如果使用'perror(errno)',它会自动将错误打印到标准错误输出流.有没有办法在不打印的情况下获得可以打印的值?