サーバー側とクライアント側を扱う iPhone アプリを書いています。私が抱えている問題は、アプリ (クライアント側) から Java プログラム (サーバー側) にデータを送信できないことです。私は今ちょっと立ち往生しています。どんな助けでも大歓迎です。
私のobj-cコード(クライアント):
- (BOOL) initConnection: (NSString *) ipAddr {
CFWriteStreamRef writeStream;
CFStreamCreatePairWithSocketToHost(NULL, (__bridge CFStringRef)ipAddr, 4444, NULL, &writeStream);
if(!writeStream)
return NO;
outStream = (__bridge NSOutputStream *) writeStream;
[outStream setDelegate:self];
[outStream scheduleInRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode];
[outStream open];
self.data = [[NSData alloc] init];
return YES;
- (void) sendCommand: (NSString *) command {
NSLog(@"Command that was sent to method: %@", command);
self.data = [NSData dataWithBytes:@"This is a test\n" length:16];
int bytes = [outStream write:[self.data bytes] maxLength:[self.data length]];
私のJavaコード(サーバー):
private void handleCommands() {
try {
do {
System.out.println("Right before reading socket");
msg = in.readLine();
System.out.println("Received: " + msg);
} while(!EOC);
} catch(IOException e) {
e.printStackTrace();
}
}
アプリからデータを送信すると、サーバー側のコードが
msg = in.readLine()を通過することはありません。アプリ側で接続を終了すると、受信した文字列がnullであることが出力されます。