[英]Question about Socket Streams on iPhone
我想將UIImage發送到帶有套接字的服務器。 我正在使用ADC中的以下代碼:
- (IBAction)searchForSite:(id)sender
{
NSString *urlStr = [sender stringValue];
if (![urlStr isEqualToString:@""]) {
[searchField setEnabled:NO];
NSURL *website = [NSURL URLWithString:urlStr];
if (!website) {
NSLog(@"%@ is not a valid URL");
return;
}
NSHost *host = [NSHost hostWithName:[website host]];
// oStream is instance variable
[NSStream getStreamsToHost:host port:80 inputStream:nil
outputStream:&oStream];
[oStream retain];
[oStream setDelegate:self];
[oStream scheduleInRunLoop:[NSRunLoop currentRunLoop]
forMode:NSDefaultRunLoopMode];
[oStream open];
}
}
第一個問題:我想創建一個NSOutputStream對象,但是發現只能用文件,緩沖區或內存將其初始化。 然后如何將流輸出到套接字?
第二個問題:ADC的參考告訴我們,方法getStreamsToHost:port:inputStream:outputStream:將代表輸出流的對象返回到遠程主機。 主機如何將輸出流返回給自己? 在哪里可以在代碼中添加輸出流以發送到主機
第一個問題 :
您已經與插座對其進行初始化。 NSStream的getStreamsToHost消息已經為您提供了一個套接字,可以與指定的主機進行對話。 每當您要寫入套接字時,只需使用oStream即可 。
第二個問題 :
在第一個問題中得到了回答。 請記住,您正在打開端口80的套接字。 因此,可能您正在遠程主機上運行WebServer。 為了能夠將圖像發送到遠程服務器,您需要實現HTTP協議。 在下面檢查我的建議。 我認為這會使您的生活更輕松。
一些建議:
我知道您沒有問這個,但是讓我給您一個建議。 您正在嘗試通過套接字發送圖像。 我會使用更高級別的協議(例如HTTP或FTP)來做到這一點。 使用普通套接字將迫使您自己實施新協議,更不用說服務器端代碼來處理傳入的圖像了。
因此,如果您使用HTTP ,只需在您喜歡的WEB開發平台(.NET,PHP,Java,Python,RoR,CGI等)中編寫一些服務器端腳本,然后在此 WebPage上使用准則即可在iPhone上提交圖像。 更容易。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.