我創建了一個基於Socket的Simple Chat應用程序。 帖子:Socket Based iPhone App幫我創建了這個。通過Socket發送文件(iOS)
我現在想通過套接字發送/接收文件。 請給我指點,我可以如何去實現這一點。
乾杯, Roshit
編輯:
代碼用於連接到插座:
NSString *aHostName = @"xx.xx.xx.xx";
NSInteger aPort = 1234;
CFReadStreamRef readStream;
CFWriteStreamRef writeStream;
CFStreamCreatePairWithSocketToHost(NULL, (CFStringRef)aHostName, aPort, &readStream, &writeStream);
self.inputStream = (NSInputStream *)readStream;
self.outputStream = (NSOutputStream *)writeStream;
[self.inputStream setDelegate:self];
[self.outputStream setDelegate:self];
[self.inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[self.outputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[self.inputStream open];
[self.outputStream open];
代碼用於發送數據
NSData *aData = [[NSData alloc] initWithData:[iRequestAPI dataUsingEncoding:NSASCIIStringEncoding]];
[self.outputStream write:[aData bytes] maxLength:[aData length]];
[aData release];
其中, iRequestAPI是th必須發送的字符串。
現在,當我嘗試通過套接字發送文件時,考慮到我將文件轉換爲NSData並使用[self.outputStream write:[aData bytes] maxLength:[aData length]];
的事實,可能會由於連接帶寬而導致整個文件未發送。 如果整個文件沒有發送,如何確保發送剩下的文件。
這是通過套接字發送文件的正確方法。 請建議..
這個問題太含糊。您需要更具體地瞭解您遇到問題的部分。你知道如何打開和讀取文件嗎?你知道如何擴展你的協議來支持發送文件嗎? – 2012-03-01 08:11:25
不是。當涉及套接字時,我真的不知道與文件處理有關的任何事情。我必須發送的文件保存在應用程序的文檔目錄中。 – Roshit 2012-03-01 11:12:07
我問了一個問題,我沒有得到任何滿意的解釋。真的沒有看到投票的必要性...如果你投下了票,你必須對此有一個很好的回答,或者至少指向解決方案。投票不是我關心的。有人請給我一個解決方案。 – Roshit 2012-03-01 11:15:28